Utilizzando LINQ, come separare un elenco di oggetti raggruppate per nome?
-
23-09-2019 - |
Domanda
Ho una tabella in cui un record simile a questo
varchar(255) Name
varchar(255) Text
varchar(255) Value
Nome è il nome DDL, Il testo è ciò che viene visualizzato, e il valore viene restituito al momento della selezione. Ci sono tra uno e venti opzioni per ogni nome. Senza iterazione se ogni opzione come un cursore, c'è un modo per tirare fuori una lista di oggetti, uno per ognuna unica Nome DDL, utilizzando Linq e C #?
Un campione dei dati:
Beds '4 (10)' 4
Beds '5 (1)' 5
Beds '7 (1)' 7
Baths 'NA (13)' NULL
Baths '0 (1)' 0
Baths '1 (13)' 1
stavo pensando di fare un select esterna per ottenere i nomi unici, poi un selezionare interno per ottenere l'elenco delle opzioni per esso, per poi tornare il set come un elenco di una serie di liste.
Soluzione
Certo, basta usare group ... by
var query = from item in context.TableName
group item by item.Name;
In alternativa, senza un'espressione di query:
var query = context.TableName.GroupBy(item => item.Name);
Il risultato sarà un IQueryable<IGrouping<string, ItemType>>
. Ogni elemento nel risultato sarà un raggruppamento :. Una chiave e una sequenza di elementi con quella chiave