當前位置:成語大全網 - 書法字典 - LINQ的OrderBy有多個字段。

LINQ的OrderBy有多個字段。

LINQ按多個字段排序(orderby、thenby、Take)。

orderby子句解析為OrderBy()方法,orderby descending子句解析為OrderBy Descending()方法:

var racers = Formula1。GetChampions()。

其中(r = & gtr.Country == "巴西")。

OrderByDescending(r = & gt;r.Wins)。

選擇(r = & gtr);

OrderBy()和OrderByDescending()方法返回IOrderEnumerable。此接口是從接口派生的

IEnumerable,但包含壹個額外的方法CreateOrderedNumerable-()。

此方法用於進壹步排序序列。

如果這兩個項目是根據關鍵字選擇器排序的,並且順序相同,則可以使用ThenBy()和ThenByDescending()方法繼續排序。

這兩個方法需要IOrderEnumerable才能工作,但是它們也返回這個接口。

因此,您可以添加任意數量的ThenBy()和ThenByDescending()方法來對集合進行排序。

使用LINQ查詢時,只需將所有用於排序的不同關鍵字(用逗號分隔)添加到orderby子句中。

這裏,

所有的參賽者先按國家排序,然後按姓氏排序,最後按名字排序。

添加到LINQ查詢結果中的Take()擴展方法用於提取前10個結果:

private static void Ordering(){ var racers =(from r in formula 1。GetChampions()orderby r.Country,r.LastName,r.FirstName select r)。取(10);foreach (var racer inracers) {控制臺。WriteLine(“{ 0:C }:{ 0:L },{0:F}”,racer);//屬性名的第壹個字母}}

Lambda表達式可以通過使用OrderBy()和ThenBy()方法來執行相同的操作:

私有靜態void排序(){

var racers = Formula1。GetChampions()。order by(r = & gt;r .國家)。然後by(r = & gt;姓氏)。然後by(r = & gt;r.FirstName)。取(10);

foreach (var racer in racers) {控制臺。WriteLine(“{ 0:C }:{ 0:L },{0:F}”,racer);//屬性名的第壹個字母}

}