Mit Linq, wie eine Liste zu trennen, um gruppierte Objekte mit Namen?
-
23-09-2019 - |
Frage
Ich habe eine Tabelle, wo ein Datensatz sieht wie folgt aus
varchar(255) Name
varchar(255) Text
varchar(255) Value
Name ist der DDL Name, Text ist, was angezeigt wird, und Wert wird bei der Auswahl zurückgegeben. Es gibt zwischen einer und zwanzig Optionen für jeden Namen. Ohne wie ein Cursor obwohl jede Option läuft, ist es eine Möglichkeit, eine Liste von Objekten zu ziehen, eine für jeden eindeutigen DDL-Namen, mit Linq und C #?
Eine Probe der Daten:
Beds '4 (10)' 4
Beds '5 (1)' 5
Beds '7 (1)' 7
Baths 'NA (13)' NULL
Baths '0 (1)' 0
Baths '1 (13)' 1
Ich dachte an eine äußere wählen zu tun, die einzigartigen Namen zu bekommen, dann eine innere wählen Sie die Liste der Optionen für sie zu erhalten, dann wieder den Satz als eine Liste aus einer Reihe von Listen.
Lösung
Sicher, benutzen Sie einfach group ... by
var query = from item in context.TableName
group item by item.Name;
Als Alternative ohne Abfrage-Ausdruck:
var query = context.TableName.GroupBy(item => item.Name);
Das Ergebnis wird eine IQueryable<IGrouping<string, ItemType>>
sein. Jedes Element im Ergebnis wird eine Gruppierung : a. Schlüssel und eine Folge von Elementen mit diesem Schlüssel