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);//屬性名的第壹個字母}
}