Comment puis-je grouper avec plusieurs colonnes à l'aide de lambda?
J'ai vu des exemples de la façon de le faire en utilisant linq pour les entités, mais je recherche la forme lambda.
Comment puis-je grouper avec plusieurs colonnes à l'aide de lambda?
J'ai vu des exemples de la façon de le faire en utilisant linq pour les entités, mais je recherche la forme lambda.
var query = source.GroupBy(x => new { x.Column1, x.Column2 });
GetHashCode
& correctement remplacéesEquals
. Ils ont été conçus pour exactement ce type de cas d'utilisation.GroupBy
retourne unIEnumerable<IGrouping<TKey, TSource>>
qui est essentiellement unIEnumerable<IEnumerable<TSource>>
avec uneKey
propriété sur l'énumérable interne. Cela vous aide-t-il à obtenir le "IEnumerable" des éléments du groupe?si ta table est comme ça
la source
Suite à la réponse aduchis ci-dessus - si vous devez ensuite filtrer en fonction de ces groupes par clés, vous pouvez définir une classe pour envelopper les nombreuses clés.
Où CustomerGroupingKey prend les clés de groupe:
la source
la source
Je suis venu avec un mélange de définition d'une classe comme la réponse de David, mais sans exiger une classe Where pour aller avec. Cela ressemble à quelque chose comme:
Où
resultRecords
est ma liste initiale que je regroupe, et c'est unList<ResultCsvImport>
. Notez que l'idée ici est que, je regroupe par 3 colonnes, IdObj1 et IdObj2 et IdObj3la source