Tengo el siguiente objeto en una lista:
public class DemoClass
{
public int GroupKey { get; set; }
public string DemoString { get; set; }
public object SomeOtherProperty { get; set; }
}
Ahora, quiero crear el siguiente diccionario a partir de él:
Dictionary<int, List<DemoClass>>
Quiero agruparlos List<DemoClass>
por propiedad GroupKey
, pero no entiendo cómo se hace y algo de ayuda.
Después de pensar un poco, logré el comportamiento necesario con:
var groupedDemoClasses = from demoClass in mySepcialVariableWhichIsAListOfDemoClass
group demoClass by demoClass.GroupKey
into groupedDemoClass
select groupedDemoClass;
var neededDictionary = groupedDemoClass.ToDictionary(gdc => gdc.Key, gdc => gdc.ToList());
pero, ¿hay alguna manera de convertir esto en una sola declaración?
Ya lo hiciste en una sola línea. Simplemente coloque
ToDictionary
al final de su primera línea. Si desea que sea más corto, use la sintaxis de composición funcional en lugar de la sintaxis de consulta.fuente
Me estoy saliendo un poco del tema aquí, pero llegué a este hilo porque estaba buscando una manera de crear un diccionario de un diccionario en Linq, y la conversación aquí me llevó a la respuesta ...
Usted puede utilizar LINQ para crear diccionarios de varios niveles, lo cual es útil para situaciones en las que tenemos más de 1 llave o dimensión que desea realizar la búsqueda. El truco consiste en crear una agrupación y luego convertirla en un diccionario, de la siguiente manera:
La consulta resultante se puede utilizar de la siguiente manera:
Espero que esto sea útil para cualquier otra persona que necesite este tipo de consulta.
fuente