LINQ, Lambda -, Group by-Liste mit
Ich habe einige Schwierigkeiten mit der Suche nach der richtigen syntax zum erreichen der folgenden Ziele:
Ist es möglich, mit LINQ (Lambda-Ausdruck) zu .GroupBy-Daten und anstelle der üblichen .Summe() oder .Count() ich möchte, dass die resultierenden Daten werden einer Liste von Int.
Definierte ich meine eigene Klasse mit dem Namen: Filter_IDs. Der Konstruktor benötigt zwei Parameter:
public int? type; //Represents the object_type column from my database
public List<int?> objects; //Represents the object_id column from my database
Ich soll zum laden von Daten aus meiner Datenbank in das Objekt ein. Die folgende LINQ-Abfrage soll das Ergebnis in einer Liste von Filter_IDs:
Die folgende LINQ-Abfrage soll das Ergebnis in einer Liste von Filter_IDs:
List<Filter_IDs> filterids = ef.filterLine
.GroupBy(fl => fl.objectType)
.Select(fl => new Filter_IDs { type = fl.Key, objects = fl.Select(x => x.object_id).ToList() })
.ToList();
Mithilfe dieser Abfrage gibt kein Gebäude-Fehler, sondern gibt eine "NotSupportedException' auf Laufzeit.
Der Datenbank sieht wie folgt aus, um Ihnen ein besseres Verständnis der Daten:
http://d.pr/i/mnhq+ (droplr Bild)
Vielen Dank im Voraus,
Gerben
- was ist
ef.filterLine
? - ef ist der Kontext und die filterLine ist der Datenbank-Tabelle vor, die object_id-und Objekttyp.
- Wenn Sie
ef.filterLine.ToList()
funktioniert das? - Das würde ja klappen, aber filterLine hat mehr Spalten als nur die objectid und den objectType. Ich will nicht die anderen Werte aus anderen Spalten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke das problem ist, die DB ist nicht in der Lage zu nennen ToList in der select -, noch um eine neue zu erstellen Filter_ID.
Probieren Sie etwas wie dieses :
Vielleicht möchten Sie
Erhalten der distinct-Liste
objectType
verwenden, um die Unterabfrage für jede Liste vonobject_id
.Allerdings scheint es effizienter, die ich einfach aufzählen die Werte in Ordnung,
Können Sie verwenden Sie GroupBy auf der client-Seite: