LINQの問題が発生したため、少し困惑しました。私は解決策を見つけるための多くの代替方法を見ることができますが、問題を解決しようと思っています。
public enum AnimalType {
Cat,
Dog,
Rodent
}
var orderedAnimalTypes = new [] { AnimalType.Rodent, AnimalType.Cat };
GetAnimals(AnimalType type)
特定の種類のすべての動物を返す関数があります。orderedAnimalTypes
そのタイプのすべての動物を調べて検索し、グループの順序付きリストを作成したいと思います。
タイプのオブジェクトになりたいですIEnumerable<IGrouping<AnimalType, Animal>>
。これは、Key
がタイプAnimalType
であり、グループの列挙がタイプが動物であるグループのリストです。
だから私がやりたいのはこれです(orderedAnimalTypes
リストをIEnumerable
グループのグループに投影した後)。
foreach (var group in groups) {
AnimalType animalType = group.Key;
IEnumerable<Animal> animals = group.ToArray();
}
LINQコンストラクトではこれを実行できないようです。それを行うには、IGroupingの独自の実装を作成する必要があるかもしれないと思っていますが、よくわかりません。
代替案
- 辞書を使えば、やりたいことがとても簡単にできましたが、注文されませんでした。そのため、私は
IEnumerable
グループ化を取得しようとしています。 - 匿名型を使用することもできますが、結果をMVCモデルに割り当てたいので、強く型付けする必要があります。必要な型は
IEnumerable<IGrouping<AnimalType, Animal>>
、その型を取得する方法がわかりません。