LINQ的OrderBy有多个字段 (List)

61 篇文章 1 订阅
48 篇文章 1 订阅
我有一个名单,我需要排序的两个领域。我已经排序设定在LINQ但只指定一个字段。我在找将由优先字段排序,然后如果在优先个字段中任何重复由第二个字段对列表排序。 例如,我想要的结果看起来像这样(排序最后则先 亚当斯,约翰・ 史密斯, 史密斯,彼得 汤普森 CodeGo.net,弗雷德 我已经看到了你的语法来这个SQL,但我正在寻找一种方式来与做
IList<Person> listOfPeople = /*The list is filled somehow.*/
IEnumerable<Person> sortedListOfPeople = listOfPeople.OrderBy(aPerson => aPerson.LastName, aPerson.FirstName); //This doesn't work.

本文地址 :CodeGo.net/165944/ 
------------------------------------------------------------------------------------------------------------------------- 
1.  您需要 ThenBy
listOfPeople.OrderBy(person => person.LastName)
   .ThenBy(person => person.FirstName)

2.  如果你想语法,使用 ThenBy() ,正如其他建议:
listOfPeople.OrderBy(person => person.LastName)
   .ThenBy(person => person.FirstName)
在查询语法中,可以几乎你想要的方式:通过分开的两个排序关键字
from person in listOfPeople
orderby person.LastName, person.FirstName
select person
上面的代码将是代码 OrderBy() ThenBy() ,如在优先个例子。 另外,如果你想有 OrderBy() 它有两个(或更多个)排序键,你当然可以写为上 IEnumerable<T> 在内部调用 OrderBy() ThenBy() 。 
3.  使用 .ThenBy(aPerson=>field2);  
4.
var sortedListOfPeople = listOfPeople.OrderBy(aPerson => aPerson.LastName).ThenBy(a => aPerson.FirstName);
///
实际应用中还可以
Dim dta As List(Of XXAlass) = GetListData(検索条件)
Dim sortDataList As List(Of XXAlass)
sortDataList = (From item In dta Order By item.F1 Ascending, item.F2 Ascending, item.F3 Ascending, item.F4 Ascending Select item).ToList()
or
sortDataList = (From item In dta Order By item.F1 Descending, item.F2 Descending, item.F3 Descending, item.F4 Descending Select item).ToList()

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值