在我的C#MVC项目中,我有一个项目列表,我想按另一个列表的顺序进行排序var FruitTypes = new List<Fruit> { new Fruit { Id = 1, Name = "Banana"}, new Fruit { Id = 2, Name = "Apple" }, new Fruit { Id = 3, Name = "Orange" }, new Fruit { Id = 4, Name = "Plum"}, new Fruit { Id = 5, Name = "Pear" },};SortValues = new List<int> {5,4,3,1,2};目前,我的列表显示为默认的水果类型。如何按“排序值”对“水果”列表进行排序?
3 回答
MYYA
TA贡献1868条经验 获得超4个赞
尽管几乎可以肯定有一种更多的LINQ-y方法,但是如果您趋向于冗长,则可以使用迭代器函数来完成此操作。例如:
public IEnumerable<Fruit> SortFruits(IEnumerable<Fruit> unordered, IEnumerable<int> sortValues)
{
foreach (var value in sortValues)
yield return unordered.Single(f => f.Id == value);
}
我喜欢它在做什么方面是明确的。当每个列表中的项目数不同时,您可以考虑引发异常,或者如果没有排序值,则不返回该项目。您必须决定两个集合中“缺失”值的行为。我认为必须处理这些情况是将这种方式以单一方法而不是较长的LINQ查询放入所有方法中的一个很好的理由。
- 3 回答
- 0 关注
- 229 浏览
添加回答
举报
0/150
提交
取消