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