Laden...

[erledigt] return List<AnonymousType> ??

Erstellt von CyberHunter vor 12 Jahren Letzter Beitrag vor 12 Jahren 751 Views
C
CyberHunter Themenstarter:in
131 Beiträge seit 2007
vor 12 Jahren
[erledigt] return List<AnonymousType> ??

verwendetes Datenbanksystem: <MSSQL2008>

Hallo zusammen,

ist es möglich eine Methode zu schreiben die eine List<AnonymousType> zurückgibt?

In etwa sowas:



public List<???> getData()
{
var result = from a in _context.artikel
        join agr in _context.artikelgruppe on a.artikelgruppe equals agr.ARTIKELGRUPPE
                       select new { Artikel = a.ARTIKEL, Name = a.NAME, NameAGR = agr.NAME, AGR = agr.artikelgruppe  };

return result.ToList();
}


Danke für eure Hilfe
CyberHunter

2.891 Beiträge seit 2004
vor 12 Jahren

Nein. Jedenfalls nicht so, wie du dir das denkst. Anonyme Typen haben nun mal die Eigenschaft, dass die keinen "Namen" haben. Somit kannst du ihn auch nicht als generischen Typparameter in der Methodensignatur verwenden.

Was du aber machen kannst, ist eine List<object> zurückzugeben. Allerdings stellt sich noch die Frage, was der Aufrufer deiner Methode mit dem Ergebnis macht.

C
CyberHunter Themenstarter:in
131 Beiträge seit 2007
vor 12 Jahren

Danke für deine Antowrt.

Ich kann das ganze als object zurückgeben, das funktioniert.
Aber wie Caste ich das in eine List<object> ??

C
CyberHunter Themenstarter:in
131 Beiträge seit 2007
vor 12 Jahren

public List<object> getData()
{
var result = (from a in _context.artikel
        join agr in _context.artikelgruppe on a.artikelgruppe equals agr.ARTIKELGRUPPE
                       select new { Artikel = a.ARTIKEL, Name = a.NAME, NameAGR = agr.NAME, AGR = agr.artikelgruppe  }).ToList<object>;

return result;
}

so klappt es, danke.

849 Beiträge seit 2006
vor 12 Jahren

Hallo,

puh, warum machst Du sowas?
anonyme Typen sollten eigentlich niemals die Methode verlassen, in der sie entstehen.

Ausserhalb dieser Methode, kannst Du eigentlich nur noch mit Reflection auf dessen Eigenschaften zugreifen.. was sagen wir einmal nicht gerade Performant ist.

Du solltest dir vllt überlegen ob das tatsächlich nötig ist..

Grüße