El uso de LINQ, cómo separar en una lista de objetos agrupados por su nombre?
-
23-09-2019 - |
Pregunta
Tengo una tabla donde un récord es similar al siguiente
varchar(255) Name
varchar(255) Text
varchar(255) Value
Nombre es el nombre DDL, el texto es lo que se muestra, y el valor se vuelve sobre la selección. Hay entre uno y veinte opciones para cada nombre. Sin embargo iteración de cada opción como un cursor, ¿hay alguna manera de sacar una lista de objetos, uno para cada uno único Nombre DDL, utilizando LINQ y C #?
Una muestra de los datos:
Beds '4 (10)' 4
Beds '5 (1)' 5
Beds '7 (1)' 7
Baths 'NA (13)' NULL
Baths '0 (1)' 0
Baths '1 (13)' 1
Yo estaba pensando en hacer un SELECT externa para obtener los nombres únicos, a continuación, seleccione un interior para obtener la lista de opciones para que, a continuación, devolver el conjunto como una lista de un conjunto de listas.
Solución
Por supuesto, sólo tiene que utilizar group ... by
var query = from item in context.TableName
group item by item.Name;
Alternativamente sin una expresión de consulta:
var query = context.TableName.GroupBy(item => item.Name);
El resultado será un IQueryable<IGrouping<string, ItemType>>
. Cada elemento en el resultado será un agrupación . Una llave y una secuencia de elementos con esa tecla