関連するカテゴリでグループ化したいアイテムのIEnumerableがあります。アイテムは、それらに関連付けられているカテゴリ(リスト)によってグループ化されているため、1つのアイテムが複数のカテゴリの一部になる可能性があります。
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))};
私は上記のコードを使用し、実際には機能しますが、数値に数千の値が含まれている場合、この操作の実行が遅くなる可能性があるため、これを行うより効率的な方法があるかどうか疑問に思いました。
私は、コードのリファクタリングをより効率的にすることを強く求めています。