LINQ的OrderBy有多个字段 (List)

本文介绍如何使用LINQ进行多重排序,首先按姓氏排序,若姓氏相同再按名字排序。提供多种实现方法,包括使用ThenBy()方法及查询语法等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我有一个名单,我需要排序的两个领域。我已经排序设定在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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值