Single():操作一个集合,同时强要求只有一个对象匹配,并返回这一个。

First():操作一个集合,可以有多个对象匹配,但是只返回第一个。

Take(1):操作一个集合,可以有对个对象匹配,单只返回第一个,但是这里返回的是一个集合,而不是单个的概念。

要对序列排序,前面使用了 orderby  子句。下面复习一下前面使用 orderby descending  子句的例子。其中 
赛手按照赢得比赛的次数进行降序排序,赢得比赛的次数是用关键字选择器指定的:

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中的Single()、First()、Take(1) LINQ 标准的查询操作符 排序 orderby、thenby、Take的更多相关文章

  1. C#编程(六十二)---------LINQ标准的查询操作符

    LINQ标准的查询操作符 首先我们来看一下LINQ的操作符,可根据查询操作符的操作”类型”进行分类,如把它们分成投影,限制,排序,联接,分组,串联,聚合,集合,生成,转换,元素,相等,量词,分割等. ...

  2. Linq中字段数据类型转换问题(Linq to entity,LINQ to Entities 不识别方法"System.String ToString()"问题解决)

    1.在工作中碰到这样一个问题: 使用linq时,需要查询两个表,在这两张表中关联字段分别是int,和varchar()也就是string,在linq中对这两个字段进行关联, 如果强制类型转换两个不同类 ...

  3. LinQ中合并、连接、相交、与非查询

    LinQ中Union合并查询:连接不同的集合,自动过滤相同项:延迟.即是将两个集合进行合并操作,过滤相同的项 var cities = (from p in mylinq.System_Places ...

  4. LINQ中,Single()、SingleOrDefault()的解析、示例

    LINQ一般查询到的结果是IEnumerable<T>集合类型,想要从中取出单一的元素,可以使用Single.First.Last.ElementAt等方法,以及它们带有OrDefault ...

  5. 4.mysql数据库创建,表中创建模具模板脚本,mysql_SQL99标准连接查询(恩,外部连接,全外连接,交叉连接)

     mysql数据库创建,表创建模等模板脚本 -- 用root用户登录系统,运行脚本 -- 创建数据库 create database mydb61 character set utf8 ; -- ...

  6. 【Linq】标准查询操作符

    A.1 聚合 聚合操作符(见表A-1),所有的结果只有一个值而不是一个序列. Average 和 Sum 针对数值 (任何内置数值类型)序列或使用委托从元素值转换为内置数值类型的元素序列. Min 和 ...

  7. LinQ实战学习笔记(三) 序列,查询操作符,查询表达式,表达式树

    序列 延迟查询执行 查询操作符 查询表达式 表达式树 (一) 序列 先上一段代码, 这段代码使用扩展方法实现下面的要求: 取进程列表,进行过滤(取大于10M的进程) 列表进行排序(按内存占用) 只保留 ...

  8. 在ASP.NET MVC中使用Boostrap实现产品的展示、查询、排序、分页

    在产品展示中,通常涉及产品的展示方式.查询.排序.分页,本篇就在ASP.NET MVC下,使用Boostrap来实现. 源码放在了GitHub: https://github.com/darrenji ...

  9. 关于Linq中First、FirstOrDefault;Single、SingleOrDefault等方法的说明

    关于Linq中First.FirstOrDefault:Single.SingleOrDefault等方法的说明 这里以First.FirstOrDefault进行说明,其他类似. 1.First:取 ...

随机推荐

  1. mongodb sharding配置

    mongodb集群配置 1 Mongo使用sharding集群 mongodb副本集群 mongos1 192.168.20.137 mongos2 192.168.20.138 mongo_conf ...

  2. python实现并行爬虫

    问题背景:指定爬虫depth.线程数, python实现并行爬虫   思路:    单线程 实现爬虫类Fetcher                 多线程 threading.Thread去调Fet ...

  3. HTML报表日期格式不对 导致报错ORA-01861: 文字与格式字符串不匹配

    PROCEDURE MAIN(ERRBUF OUT VARCHAR2, RETCODE OUT VARCHAR2, P_CUSTOMER_ID IN VARCHAR2, P_PERSON_ID IN ...

  4. bug检测报告---礼物挑选小工具--飞天小女警

    飞天小女警----礼物挑选小工具 测试产品链接:http://123.207.159.79:8088/giving_gifts/ 发布在作者的博客里面:http://www.cnblogs.com/s ...

  5. Monkey之环境搭建完全版

    图文版将在后期补充. 如果想要搭建好Monkey的测试环境,首先几个必要的步骤和环境不能少,分别是java相关环境.Android SDK环境,启动android虚拟机或连接真机.执行monkey测试 ...

  6. 运行nodejs的blog程序遇见问题

    我是运行这个教程的代码.可以在网上找到相关视频和代码. 第一个问题,数据库中没有创建对应的表就开始运行程序.node app.js 这个错误问题大家可以去重现一下 第二个问题,我也没有看明白,但是我根 ...

  7. js 获取参数

    <html lang="en"> <head> <meta charset="UTF-8"> <meta name=& ...

  8. [转] 停止支持的老版本ubuntu源列表-old-releases

    我使用的是ubuntu 9.10,在网上找了大半个月之后,今天终于找到了可用的源地址.感谢这位cgjcgs仁兄. 点击阅读原文 ubuntu的普通版本支持的时间都有限,过了支持的时间,更新源都会被停用 ...

  9. RegExp类型,单体内置对象

    1.RegExp类型:  1)什么是正则表达式:RegExp    --是一种规则,模式    --强大的字符串匹配工具    --创建:    --使用RegExp构造函数创建:var re=new ...

  10. 实用Redis操作类

    <?php /** * ------------------------------------------ * 统一redis的配置与数据存储规范,便于扩展与修改 * # redis通常用于热 ...