J'ai un IEnumerable d'éléments que je voudrais regrouper par catégories associées. Les éléments sont regroupés selon les catégories qui leur sont associées - c'est-à-dire une liste - de sorte qu'un seul élément peut potentiellement faire partie de plusieurs catégories.Éléments de groupe LINQ. Un seul élément peut être dans plusieurs groupes
var categories = numbers.SelectMany(x => x.Categories).Distinct();
var query =
from cat in categories
select new {Key = cat,
Values = numbers.Where(n => n.Categories.Contains(cat))};
J'utilise le code ci-dessus, et il ne fonctionne en fait, mais je me demandais s'il y avait un moyen plus efficace de faire cela parce que cette opération se produira probablement lentement lorsque le nombre contient des milliers de valeurs.
Je demande à peu près un refactoring du code pour être plus efficace.