LINQ 标准的查询操作符 排序 orderby、thenby、Take
2009-10-06 21:28
471 查看
要对序列排序,前面使用了 orderby 子句。下面复习一下前面使用 orderby descending 子句的例子。其中
赛手按照赢得比赛的次数进行降序排序,赢得比赛的次数是用关键字选择器指定的:
orderby 子句解析为 OrderBy()方法,orderby descending 子句解析为OrderBy Descending()方法:
var racers = Formula1.GetChampions().
Where(r = > r.Country == "Brazil").
OrderByDescending(r = > r.Wins).
Select(r = > r);
OrderBy() 和 OrderByDescending ()方法返回 IOrderEnumerable<TSource>。这个接口派生于接口
IEnumerable<TSource>,但包含一个额外的方法CreateOrderedEnumerable- <TSource>()。
这个方法用于进一步给序列排序。
如果根据关键字选择器来排序,两项的顺序相同,就可以使用 ThenBy()和 ThenByDescending ()方法继续排序。
这两个方法需要 IOrderEnumerable<TSource>才能工作,但也返回这个接口。
所以,可以添加任意多个 ThenBy()和 ThenByDescending ()方法,对集合排序。
使用 LINQ 查询时,只需把所有用于排序的不同关键字(用逗号分隔开)添加到orderby 子句中。
这里,
所有的赛手先按照国家排序,再按照姓氏排序,最后按照名字排序。
添加到 LINQ 查询结果中的Take()扩展方法用于提取前 10 个结果:
Lambda表达式 使用OrderBy()和 ThenBy()方法可以执行相同的操作:
赛手按照赢得比赛的次数进行降序排序,赢得比赛的次数是用关键字选择器指定的:
private static void Ordering() { var racers = from r in Formula1.GetChampions() where r.Country == "Brazil" orderby r.Wins descending select r; foreach (var racer in racers) { Console.WriteLine("{0:C}: {0:L}, {0:F}", racer); //属性名的第一个字母 } }
orderby 子句解析为 OrderBy()方法,orderby descending 子句解析为OrderBy Descending()方法:
var racers = Formula1.GetChampions().
Where(r = > r.Country == "Brazil").
OrderByDescending(r = > r.Wins).
Select(r = > r);
OrderBy() 和 OrderByDescending ()方法返回 IOrderEnumerable<TSource>。这个接口派生于接口
IEnumerable<TSource>,但包含一个额外的方法CreateOrderedEnumerable- <TSource>()。
这个方法用于进一步给序列排序。
如果根据关键字选择器来排序,两项的顺序相同,就可以使用 ThenBy()和 ThenByDescending ()方法继续排序。
这两个方法需要 IOrderEnumerable<TSource>才能工作,但也返回这个接口。
所以,可以添加任意多个 ThenBy()和 ThenByDescending ()方法,对集合排序。
使用 LINQ 查询时,只需把所有用于排序的不同关键字(用逗号分隔开)添加到orderby 子句中。
这里,
所有的赛手先按照国家排序,再按照姓氏排序,最后按照名字排序。
添加到 LINQ 查询结果中的Take()扩展方法用于提取前 10 个结果:
private static void Ordering() { var racers = (from r in Formula1.GetChampions() orderby r.Country, r.LastName, r.FirstName select r).Take(10); foreach (var racer in racers) { Console.WriteLine("{0:C}: {0:L}, {0:F}", racer); //属性名的第一个字母 } }
Lambda表达式 使用OrderBy()和 ThenBy()方法可以执行相同的操作:
private static void Ordering() { var racers = Formula1.GetChampions(). OrderBy(r => r.Country). ThenBy(r => r.LastName). ThenBy(r => r.FirstName). Take(10); foreach (var racer in racers) { Console.WriteLine("{0:C}: {0:L}, {0:F}", racer); //属性名的第一个字母 } }
相关文章推荐
- LINQ 标准的查询操作符 排序 orderby、thenby、Take
- LINQ 标准的查询操作符 排序 orderby、thenby、Take
- LinQ标准的查询操作符 排序order,thenby,Take
- LINQ 标准的查询操作符 分区 Take 、Skip 、TakeWhile 、SkipWhile
- LINQ 按多个字段排序(orderby、thenby、Take)
- LINQ 标准的查询操作符 分区 Take 、Skip 、TakeWhile 、SkipWhile
- LINQ 标准的查询操作符 分区 Take 、Skip 、TakeWhile 、SkipWhile
- LINQ 标准的查询操作符 分区 Take 、Skip 、TakeWhile 、SkipWhile
- LINQ 按多个字段排序(orderby、thenby、Take)
- LINQ解析:标准查询操作符1
- LINQ 标准的查询操作符 过滤 where、index1、OfType
- LINQ 标准的查询操作符 复合的 from 子句
- LINQ 标准的查询操作符 分组 group by into 、select new 、orderby descending、from in
- LINQ 标准的查询操作符 设置操作符号 两个结果集的 并、交、差、唯一
- LINQ 标准的查询操作符 生成操作符 Range()、Empty()和Repear()
- LINQ标准查询操作符详解
- LINQ之延迟执行标准查询操作符(上)
- LINQ 的标准查询操作符
- LINQ入门教程之各种标准查询操作符(二)
- 步步为营VS 2008 + .NET 3.5(6) - LINQ查询操作符之Distinct、Union、Concat、Intersect、Except、Skip、Take、SkipWhile、TakeWhile、Single、SingleOrDefaul