LINQ 按多個字段排序(orderby、thenby、Take)
orderby 子句解析為 OrderBy()方法,orderby descending 子句解析為OrderBy Descending()方法:
OrderBy()升序 和 OrderByDescending() 降序 方法傳回 IOrderEnumerable。這個接口派生于接口
IEnumerable,但包含一個額外的方法CreateOrderedEnumerable- ()。
這個方法用于進一步給序列排序。
如果根據關鍵字選擇器來排序,兩項的順序相同,就可以使用 ThenBy()和 ThenByDescending ()方法繼續排序。
這兩個方法需要 IOrderEnumerable才能工作,但也傳回這個接口。
是以,可以添加任意多個 ThenBy()和 ThenByDescending ()方法,對集合排序。
使用 LINQ 查詢時,隻需把所有用于排序的不同關鍵字(用逗号分隔開)添加到orderby 子句中。
這裡,所有的賽手先按照國家排序,再按照姓氏排序,最後按照名字排序。
添加到 LINQ 查詢結果中的Take()擴充方法用于提取前 10 個結果:
Lambda表達式 使用OrderBy()和 ThenBy()方法可以執行相同的操作: