usas - select in linq
Grupo LINQ por un objeto de diccionario (3)
No puedo comentar sobre @Michael Blackburn, pero supongo que obtuviste el voto a favor porque el GroupBy no es necesario en este caso.
Úselo como:
var lookupOfCustomObjects = listOfCustomObjects.ToLookup(o=>o.PropertyName);
var listWithAllCustomObjectsWithPropertyName = lookupOfCustomObjects[propertyName]
Además, he visto esto funcionar mucho mejor que cuando uso GroupBy (). ToDictionary ().
Estoy intentando usar LINQ para crear un Dictionary<string, List<CustomObject>>
de una List<CustomObject>
. Puedo hacer que funcione con "var", pero no quiero usar tipos anónimos. Esto es lo que tengo
var x = (from CustomObject o in ListOfCustomObjects
group o by o.PropertyName into t
select t.ToList());
También intenté usar Cast<>()
desde la biblioteca LINQ una vez que tengo x
, pero obtengo problemas de compilación por el hecho de que no es válido.
Para @ atari2600, así es como se vería la respuesta usando ToLookup en la sintaxis lambda:
var x = listOfCustomObjects
.GroupBy(o => o.PropertyName)
.ToLookup(customObject => customObject);`
Básicamente, toma el IGrouping y lo materializa para usted en un diccionario de listas, con los valores de PropertyName como la clave.
Dictionary<string, List<CustomObject>> myDictionary = ListOfCustomObjects
.GroupBy(o => o.PropertyName)
.ToDictionary(g => g.Key, g => g.ToList());