C#Linq的10个练习
1.LINQ的两种语法
2.一些有用的LINQ扩展方法
| 扩展方法 | 描述 | 延期 | 
| All | 如果源数据中的所有条目都与谓词匹配,则返回true | 否 | 
| Any | 如果源数据中至少有一个条目与谓词匹配,则返回true | 否 | 
| Contains | 如果数据源含有指定的条目或值,则返回true | 否 | 
| Count | 返回数据源的条目数 | 否 | 
| First | 返回数据源的第一个条目 | 否 | 
| FirstOrDefault | 返回数据源的第一个条目或无条目时,返回默认值 | 否 | 
| Last | 返回数据源的最后一个条目 | 否 | 
| LastOrDefault | 返回数据源的最后条目或无条目时,返回默认值 | 否 | 
| Max Min | 返回由lambda表达式表示的最大值或最小值 | 否 | 
| OrderBy OrderByDescending | 基于lambda表达式返回的值对源数据进行排序 | 是 | 
| Reverse | 反转数据源中数据项的顺序 | 是 | 
| Select | 设计一个查询结果 | 是 | 
| SelectMany | 把每个数据项投射到一个条目序列中,然后把所有这些结果序列连接成一个序列 | 是 | 
| Single | 返回数据源的第一个条目或有多个匹配时,抛出一个异常 | 否 | 
| SingleOrDefault | 返回数据源的第一个条目或无条目时,返回默认值;或者有多个匹配条目时,抛出一个异常 | 否 | 
| Skip SkipWhile | 跳过指定数目的元素或当谓词匹配时,跳过 | 是 | 
| Sum | 对谓词选定的值求和 | 否 | 
| Take TakeWhile | 从数据源的开始处选择指定数目的元素或当谓词匹配时,选择条目 | 是 | 
| ToArray ToDictionary ToList | 把数据源转换成数组或其他集合类型 | 否 | 
| Where | 过滤掉源数据中与谓词不匹配的条目 | 是 | 
3.LINQ查询表达式
| 约束 | LINQ查询表达式必须以from子句开头,以select或group子句结束。 | 
| 关键字 | 功能 | 
| from…in… | 指定要查找的数据源以及范围变量,多个from子句则表示从多个数据源查找数据。 注意:c#编译器会把“复合from子句”的查询表达式转换为SelectMany()扩展方法。 | 
| join…in…on…equals… | 指定多个数据源的关联方式 | 
| let | 引入用于存储查询表达式中子表达式结果的范围变量。通常能达到层次感会更好,使代码更易于阅读。 | 
| orderby、descending | 指定元素的排序字段和排序方式。当有多个排序字段时,由字段顺序确定主次关系,可指定升序和降序两种排序方式 | 
| where | 指定元素的筛选条件。多个where子句则表示了并列条件,必须全部都满足才能入选。每个where子句可以使用谓词&&、||连接多个条件表达式。 | 
| group | 指定元素的分组字段。 | 
| select | 指定查询要返回的目标数据,可以指定任何类型,甚至是匿名类型。(目前通常被指定为匿名类型) | 
| into | 提供一个临时的标识符。该标识可以引用join、group和select子句的结果。 1) 直接出现在join子句之后的into关键字会被翻译为GroupJoin。(into之前的查询变量可以继续使用) 2) select或group子句之后的into它会重新开始一个查询,让我们可以继续引入where, orderby和select子句,它是对分步构建查询表达式的一种简写方式。(into之前的查询变量都不可再使用) | 
4.复写linq语法详细中的11个例子
1)简单的LINQ语法
| 1 2 3 4 5 6 7 | //1var ss=from r indb.testTable                select r;//2var ss1=db.testTable;//3stringsssql="selec * from testTable"; | 
2)带Where的查询
| 1 2 3 4 5 6 7 8 | //1var ss=from r indb.testTable            where r.rpId>10            select r;//2var ss1=db.testTable.Where(p=>p.rpId>10);//3stringsssql="select * from testTable where rpId>10"; | 
3)简单函数计算
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | //1//获取最大的rpIdvar ss=(from r indb.testTable select r).Max(p=>p.rpId);//获取最小的rpIdvar ss=(from r indb.testTable select r).Min(p=>p.rpId);//获取结果集的总数var ss=(from r indb.testTable select r).Count();//获取rpId的和var ss=(from r indb.testTable select r).Sum(p=>p.rpId); //2//var ss1 = db.testTable.Max(p=>p.rpId);//var ss1 = db.testTable.Min(p => p.rpId);//var ss1 = db.testTable.Count() ;var ss1 = db.testTable.Sum(p => p.rpId);Response.Write(ss);//3stringsssql = "select max(rpId) from testTable";           sssql = "select min(rpId) from testTable";           sssql = "select count(1) from testTable";           sssql = "select sum(rpId) from testTable"; | 
4)排序
| 1 2 3 4 5 6 7 8 9 10 11 | var ss=from r indb.testTable             where r.rpId>10            orderby r.rpId descending //倒序            //orderby r.rpId ascending  //正序            select r;//正序var ss1=db.testTable.OrderBy(p=>p.rpId).Where(p=>p.rpId>10).ToList();//倒序var ss2=db.testTable.OrderByDescending(p=>p.rpId).Where(p=>p.rpId>10).ToList();stringsssql="select * from testTable where rpId>10 order by rpId [decs|asc]"; | 
5)top(1)
| 1 2 3 4 5 6 7 8 | //如果取最后一个可以按倒序排列再取值var ss=(from r indb.testTable select r).FirstOrDefault();//var ss1=db.testTable.FirstOrDefault();var ss1=db.testTable.First();stringsssql="select top(1) * from testTable"; | 
6)跳过前面多少条数据取余下的数据
| 1 2 3 4 5 6 7 8 | //1var ss=(from r indb.testTable                 orderby r.rpId descending                select r).Skip(10); //跳过前10条数据,取10条之后的所有数据//2var ss1=db.testTable.OrderByDescending(p=>p.rpId).Skip(10).ToList();//3stringsssql="select * from (select ROW_NUMBER() over(order by rpId desc) as rowNum,* from testTable) as t where rowNum>10"; | 
7)分页数据查询
| 1 2 3 4 5 6 7 8 9 10 11 | //1var ss=(from r indb.testTable                where r.rpId>10                orderby r.rpId descending                select r).Skip(10).Take(10); //取第11条到第20条的数据//2.Take(10):数据从开始获取,获取指定数量的连续数据var ss1=db.testTable.OrderByDescending(p=>p.rpId).Where(p=>p.rpId>10).Skip(10).Take(10).ToList();//3stringsssql="select * from (select ROW_NUMBER() over(order by rpId desc) asrowNum,* from testTable) asc where rowNum>10and rowNum<=20"; | 
8)包含,类似like ‘%%’
| 1 2 3 4 5 6 7 8 | //1var ss = from r indb.testTable         where r.SortsText.Contains("张")         select r;//2var ss1 = db.testTable.Where(p => p.SortsText.Contains("张")).ToList();//3stringsssql = "select * from testTable where SortsText like '%张%'"; | 
参考资料
C#Linq的10个练习的更多相关文章
- C# LINQ(10)
		LINQ 查询 var query = from r in Formula1.GetChampions() where r.Country == "Brazil" orderby ... 
- Linq 学习笔记
		简介: LINQ 提供一种统一的方式,让我们能在C#语言中直接查询和操作各种数据. LINQ是用来描述数据访问总体方式的术语.LINQ to Object是针对实现了IEnumerable< ... 
- Linq/List/Array/IEnumerable等集合操作
		来源:http://www.cnblogs.com/liushanshan/archive/2011/01/05/1926263.html 目录 1 LINQ查询结果集 1 2 Sy ... 
- TinyFrame升级之九:实现复杂的查询
		本章我们主要讲解如何实现一个复杂的查询.由于目前TinyFrame框架已经投入到了实际的项目生产中,所以我很乐意将项目中遇到的任何问题做以记录并备忘. 这章中,我们提到的查询界面如下所示: 其中,涉及 ... 
- Demo+在Linux下运行(CentOS7+dotnetcore sdk)
		来份ASP.NET Core尝尝 0x01.前言 学习ASP.NET Core也有一段时间了,虽说很多内容知识点还是处于一知半解的状态,但是基本的,还是 略懂一二.如果有错误,还望见谅. 本文还是和之 ... 
- 8天玩转并行开发——第三天 plinq的使用
		原文 8天玩转并行开发——第三天 plinq的使用 相信在.net平台下,我们都玩过linq,是的,linq让我们的程序简洁优美,简直玩的是爱不释手,但是传统的linq只是串行代码,在并行的 年代如果 ... 
- 用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的Code First迁移和部署
		用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的Code First迁移和部署 这是微软官方SignalR 2.0教程Getting Started with En ... 
- 机器Coding For WPF
		declare @modelcode varchar(90)='AutoProjectType'declare @ns varchar(90)='WpfApplication'declare @dat ... 
- Core3.1WebApi使用MongoDB
		好久没有使用MongoDB了,重新测试使用,版本不一样之前很多方法都使用不了了,下面为部分测试,下次再来更新测试 测试中使用的命令 // 新增读写的用户 db.createUser({ user:'f ... 
随机推荐
- Face-anti-spoofing实验记录(通过val_public_list.txt制作val数据集)
			https://sites.google.com/qq.com/chalearnfacespoofingattackdete/contest-details 数据集官方获取网站 网友总结 https: ... 
- 【原创】(二)Linux进程调度器-CPU负载
			背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ... 
- (六)mybatis拦截器
			首先拦截器可以拦截mybatis四大核心对象:StatementHandler,ParameterHandler,ResultSetHandler,Executor,具体拦截时根据需求拦截一部分方法 ... 
- Gorm与数据库(单复数)表结构之间的映射
			Gorm连接MySQL: import ( _ "github.com/go-sql-driver/mysql" "github.com/jinzhu/gorm" ... 
- java8 Stream API笔记
			生成Stream Source的方式 从Collection和数组生成 * Collection.stream() * Collection.parallelStream() * Arrays.str ... 
- 03(a)多元有约束优化问题(准备知识)
			转成Latex上传太麻烦,直接截图上传了,需要电子版的可以关注一下,微信公众号:“实干小海豹”,回复:”优化01a“,”优化01b“,”优化02a“,”优化02b“,”优化02c“,”优化02c“.. ... 
- Linux中awk抽取包含某字段的整行日志
			命令示例:awk '{if($0~"listAuths") print}' xxx.log 解释说明:抽取xxx.log整个日志文件中,包含“listAuths”的行,打印输出 
- 搭建Samba服务器、多部门共享,互不干扰,超实用
			案例二 实现不同的用户访问同一个共享目录具有不同的权限,便于管理和维护.基本上能满足一些企业用户的需求. 一. 需求 1. 某公司有3个大部门,分别为:人事行政部(HR).财务部(FM).技术支持部( ... 
- 设置ssh远程其他主机登录显示提示信息
			文件及路径: /etc/motd 实例: [root@A-client ~]# ssh -p 22 test@10.0.0.2 test@10.0.0.2's password: Last login ... 
- Python应用——自定义排序全套方案
			本文始发于个人公众号:TechFlow,原创不易,求个关注 今天的这篇文章和大家聊聊Python当中的排序,和很多高级语言一样,Python封装了成熟的排序函数.我们只需要调用内部的sort函数,就可 ... 
