首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用LINQ对列表进行排序,所以高分首先是按字母顺序排列的,其次是姓和名。

使用LINQ对列表进行排序,所以高分首先是按字母顺序排列的,其次是姓和名。
EN

Stack Overflow用户
提问于 2015-03-04 00:41:02
回答 1查看 587关注 0票数 0

我有这个密码

代码语言:javascript
复制
 Person[] peopleArray = new Person[5]
   {
      new Person("John", "Jones", "001", 1450),
      new Person("Jimmy", "Smith", "004", 1237),
      new Person("Sue", "Baker", "002", 1534),
      new Person("Chuck", "Smith", "003", 1450),
      new Person("Toby", "Jones", "005", 1450)
   };

 var sortedPeopleList = peopleArray.OrderBy(a => a.score).ThenBy(a => a.lastName)
                                              .ThenBy(a => a.firstName).Reverse();

 foreach (Person p in sortedPeopleList)
 Console.WriteLine(p.score + " " + p.id + " " + p.firstName + " " + p.lastName );
 Console.ReadKey();

产出如下:

1534 002苏贝克 1450 003查克史密斯<=这应该是#4 1450 005托比琼斯<=这应该是#3 1450 001约翰·琼斯<=这应该是#2 1237 004 Jimmy Smith

所需输出必须按分数(降序)排序,然后按姓氏(升序),最后按姓氏(升序)排序。

1

534 002苏贝克 1450 001约翰琼斯 1450 005托比琼斯 1450 003查克·史密斯 1237 004 Jimmy Smith

任何建议都会有帮助。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-04 00:49:48

OrderByThenBy都有合作伙伴方法OrderByDescendingThenByDescending

因此,现在您可以消除Reverse并使用:

代码语言:javascript
复制
peopleArray.OrderByDescending(a => a.score)
           .ThenBy(a => a.lastName)
           .ThenBy(a => a.firstName);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28844757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档