LINQ的OrderBy有多个字段 (List)

我有一个名单,我需要排序的两个领域。我已经排序设定在LINQ但只指定一个字段。我在找将由优先字段排序,然后如果在优先个字段中任何重复由第二个字段对列表排序。 例如,我想要的结果看起来像这样(排序最后则先 亚当斯,约翰・ 史密斯, 史密斯,彼得 汤普森 CodeGo.net,弗雷德 我已经看到了你的语法来这个SQL,但我正在寻找一种方式来与做
IList listOfPeople = /*The list is filled somehow.*/
IEnumerable 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 在内部调用 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()

你可能感兴趣的:(.NET,VB.net,c#.net,Linq&lambda,Entity,Framework,MVC,MVP,MVVM)