Usando o LINQ, como separar uma lista em objetos agrupados pelo nome?
-
23-09-2019 - |
Pergunta
Eu tenho uma mesa onde um disco se parece com isso
varchar(255) Name
varchar(255) Text
varchar(255) Value
Nome é o nome DDL, o texto é o que é exibido e o valor é retornado na seleção. Existem entre uma e vinte opções para cada nome. Sem iterar, embora cada opção como um cursor, existe alguma maneira de retirar uma lista de objetos, um para cada nome DDL exclusivo, usando LINQ e C#?
Uma amostra dos dados:
Beds '4 (10)' 4
Beds '5 (1)' 5
Beds '7 (1)' 7
Baths 'NA (13)' NULL
Baths '0 (1)' 0
Baths '1 (13)' 1
Eu estava pensando em fazer uma seleção externa para obter os nomes exclusivos, depois uma seleção interna para obter a lista de opções e retornar o conjunto como uma lista de um conjunto de listas.
Solução
Claro, basta usar group ... by
var query = from item in context.TableName
group item by item.Name;
Alternativamente, sem uma expressão de consulta:
var query = context.TableName.GroupBy(item => item.Name);
O resultado será um IQueryable<IGrouping<string, ItemType>>
. Cada elemento no resultado será um agrupamento: Uma chave e uma sequência de itens com essa chave.