我有一个 LINQ 问题,这让我有点难过。我可以看到很多替代方法来找到解决方案,但我想尝试解决问题,因为它困扰着我!
public enum AnimalType {
Cat,
Dog,
Rodent
}
var orderedAnimalTypes = new [] { AnimalType.Rodent, AnimalType.Cat };
我有一个函数GetAnimals(AnimalType type)
可以返回给定类型的所有动物。我想获取orderedAnimalTypes
并查找该类型的所有动物以创建有序的组列表。
我想得到一个类型的对象IEnumerable<IGrouping<AnimalType, Animal>>
。这是一个分组列表,其中Key
是类型AnimalType
,并且分组的枚举是 Animal 类型。
所以我想做的是这个(在将orderedAnimalTypes
列表投影到一组组之后IEnumerable
。
foreach (var group in groups) {
AnimalType animalType = group.Key;
IEnumerable<Animal> animals = group.ToArray();
}
我似乎无法用任何 LINQ 构造来做到这一点。我想我可能需要自己实现 IGrouping 才能做到这一点,但我不确定。
备择方案
- 我可以很容易地用字典做我想要的事情,但它不会被订购。这就是为什么我试图得到一个
IEnumerable
分组。 - 我也可以使用匿名类型,但我想将结果分配给 MVC 模型并且需要强类型化。我想要的类型是
IEnumerable<IGrouping<AnimalType, Animal>>
,但我看不到如何获得该类型。