为了账号安全,请及时绑定邮箱和手机立即绑定

如何按List <int>对List <Type>排序?

如何按List <int>对List <Type>排序?

C#
阿晨1998 2021-04-09 17:14:04
在我的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查询放入所有方法中的一个很好的理由。


查看完整回答
反对 回复 2021-04-17
  • 3 回答
  • 0 关注
  • 205 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信