order by多个字段排序把其他列的顺序变错了(order by多个字段)


(资料图片仅供参考)

1、LINQ 按多个字段排序(orderby、thenby、Take) orderby 子句解析为 OrderBy()方法,orderby descending 子句解析为OrderBy Descending()方法:var racers = ().Where(r = >***.Count***y == "Brazil").OrderByDescending(r = >).Select(r = >r);OrderBy() 和 OrderByDescending ()方法返回 IOrderEnumerable。

2、这个接口派生于接口IEnumerable,但包含一个额外的方法CreateOrderedEnumerable- ()。

3、这个方法用于进一步给序列排序。

4、如果根据关键字选择器来排序,两项的顺序相同,就可以使用 ThenBy()和 ThenByDescending ()方法继续排序。

5、这两个方法需要 IOrderEnumerable才能工作,但也返回这个接口。

6、所以,可以添加任意多个 ThenBy()和 ThenByDescending ()方法,对集合排序。

7、 使用 LINQ 查询时,只需把所有用于排序的不同关键字(用逗号分隔开)添加到orderby 子句中。

8、这里,所有的赛手先按照国家排序,再按照姓氏排序,最后按照名字排序。

9、添加到 LINQ 查询结果中的Take()扩展方法用于提取前 10 个结果:private static void Ordering() { var racers = (from r in ()orderby ***.Count***y, , select r).Take(10); foreach (var racer inracers) { ("{0:C}: {0:L}, {0:F}", racer); //属性名的第一个字母 } }Lambda表达式 使用OrderBy()和 ThenBy()方法可以执行相同的操作:private static void Ordering() {var racers = (). OrderBy(r =>***.Count***y). ThenBy(r =>). ThenBy(r =>). Take(10);foreach (var racer in racers) { ("{0:C}: {0:L}, {0:F}", racer); //属性名的第一个字母 }}。

本文分享完毕,希望对大家有所帮助。