¿Cómo puedo agrupar con múltiples columnas usando lambda?
Vi ejemplos de cómo hacerlo usando linq para entidades, pero estoy buscando la forma lambda.
c#
.net
entity-framework
lambda
Naor
fuente
fuente
GetHashCode
y anulados correctamenteEquals
. Fueron diseñados exactamente para este tipo de caso de uso.GroupBy
devuelve unIEnumerable<IGrouping<TKey, TSource>>
que es esencialmente unIEnumerable<IEnumerable<TSource>>
con unaKey
propiedad en el enumerable interno. ¿Eso le ayuda a obtener el "IEnumerable" de los elementos del grupo?si tu mesa es asi
fuente
Además de la respuesta de aduchis anterior, si luego necesita filtrar en función de esos grupos por claves, puede definir una clase para envolver las muchas claves.
Donde CustomerGroupingKey toma las claves de grupo:
fuente
fuente
Se me ocurrió una combinación de definir una clase como la respuesta de David, pero sin requerir una clase Where para ir con ella. Se parece a algo como:
¿Dónde
resultRecords
está mi lista inicial que estoy agrupando y es unList<ResultCsvImport>
. Tenga en cuenta que la idea aquí es que estoy agrupando por 3 columnas, IdObj1 e IdObj2 e IdObj3fuente