【发布时间】:2010-12-07 13:56:25
【问题描述】:
我遇到了一个 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>>,但我不知道如何获得该类型。
【问题讨论】: