LINQ查询知识总结
LINQ查询知识总结:案例分析
案例:汽车表car,系列表brand,厂商表productor
private MyCarDataContext _Context = new MyCarDataContext();
(1)查询全部汽车信息
var list = _Context.Car;
LINQ语法:var list = from p in _Context.Car select p;
(2)简单筛选行:查询车系代号是 b002的所有车 关键点:“==”
var list = _Context.Car.Where(p=>p.Brand=="b002");
LINQ语法:var list = from p in _Context.Car where p.Brand == "b002" select p;
(3)简单投影列:只查询三列:名称,价格,排量 关键点:“new{ }”
var list = _Context.Car.Select(p=>new {p.Name,p.Price,p.Exhaust});
LINQ语法:var list = from p in _Context.Car select new {p.Name,p.Price,p.Exhaust}
(4)多条件查询---逻辑与:查询排量大于2000并且价格小于50万的车 关键点:“&&”
var list = _Context.Car.Where(p=>p.Exhaust>2000&&p.Price<50);
var list = _Context.Car.Where(p=>p.Exhaust>2000).Where(p=>p.Price<50);
LINQ语法:var list = from p in _Context.Car where p.Exhaust>2000 && p.Price<50 select p;
(5)多条件查询---逻辑或:查询排量大于2000或者价格小于50万的车 关键点:“||”
var list1 = _Context.Car.where(p=>p.Exhaust>2000);
var list2 = _Context.Car.Where(p=>p.Price<50);
var list = list1.union(list2);
LINQ语法:var list = from p in _Context.Car where p.Exhaust>2000 || p.Price<50 select p;
(6)模糊查询
《1》查询包含某个内容:查询汽车名称中包含“马”的车 关键点:“Contains("包含的内容")”
var list = _Context.Car.Where(p=>p.Name.Contains("马"));
LINQ语法:var list = from p in _Context.Car where p.Name.Contains("马") select p;
《2》查询汽车名称以“宝马”开头的车 关键点:“StartWith("内容")”
var list = _Context.Car.Where(p=>p.Name.StartWith("宝马"));
LINQ语法:var list = from p in _Context.Car.StartWith("宝马") select p;
《3》查询汽车名称以“版”结尾的车 关键点:“EndsWith("内容")”
var list = _Context.Car.Where(p=>p.Name.EndsWith("版"));
LINQ语法:var list = from p in _Context.Car where p.Name.EndsWith("版") select p;
《4》查询汽车名称倒数二三个字是“豪华”的车 关键点:“Substring()”
var list = _Context.Car.Where(p=>p.Name.Substring(p.Name.Length-3,2));
LINQ语法:var list = from p in _Context.Car where p.Name.Substring(p.Name.Length-3,2) select p;
(7)多表查询
《1》查询厂商是“一汽丰田”下的所有车
var list = _Context.Car.Where(p=>p.Brand1.Productor.Prod_Name=="一汽丰田");//Brand1和Productor都是数据库表映射出的对象
LINQ语法:var list = from p in _Context.Car where p.Brand1.Productor.Prod_Name=="一汽丰田" select p;
《2》查询与宝马5同厂商的所有车
string prodCode = (_Context.Car.Where(p=>p.Name.StartWith("宝马5"))).first().Brand1.Productor.Prod_Code;
var list = _Context.Car.Where(p=>p.Brand1.Productor.Prod_Code==prodCode);
LINQ语法:string prodCode = (from p in _Context.Car where p.Name.StartWith("宝马5") select p).first().Brand1.Productor.Prod_Code;
var list = from m in _Context.Car where p.Brand1.Productor.Prod_Code==prodCode select m;
(7)分页查询
《1》每页5条记录,查询第3页
var list = _Context.Car.Skip(2*5).Take(5);//2:代表前两页,5:代表每页显示5条,Skip(2*5):代表跳过前两页(前10条记录),Take(5):代表查询5条记录回来
LINQ语法:var list = from p in _Context.Car.Skip(2*5).Take(5) select p;
《2》查询数据库总记录数
var count = _Context.Car.Count();
LINQ语法:var list = from p in _Context.Car.Count();
(8)排序查询
《1》按价格升序排序
var list = _Context.Car.Orderby(p=>p.Price) ;
LINQ语法:var list = from p in _Context.Car orderby p.price select p;
《2》按价格降序排序
var list = _Context.Car.OrderByDescending(p=>p.Price);
LINQ语法:var list = from p in _Context.Car orderby p.Price descending select p;
(9)取集合中某个对象
《1》取集合中第一个对象
Car data = _Context.Car.First();
LINQ语法:var list = from p in _Context.Car select p; Car data = list.first();
《2》取集合中最后一个对象
Car data = _Context.Car.orderbydescending().first();
也可以这样:
var list = _Context.Car.orderbydescending().ToList();//转化为内存中的对象
Car data = list.Last();
《3》取集合中的某个(如第五个)对象:思路--去掉该对象前面的所有对象,取下一个对象即可
var list = _Context.Car.Skip(4).Take(1);
(10)聚合函数(Sum(),Average(),Max(),Min())
使用实例:
var list = _Context.Car.Sum(p=p.Price).value.tostring();
(11)Distinct关键字(去除查询出的记录中重复的记录)
使用实例:
var list = _Context.Car.Select(p=>p.Name).Distinct();
LINQ查询知识总结的更多相关文章
- LinqToDB 源码分析——轻谈Linq查询
LinqToDB框架最大的优势应该是实现了对Linq的支持.如果少了这一个功能相信他在使用上的快感会少了一个层次.本来笔者想要直接讲解LinqToDB框架是如何实现对Linq的支持.写到一半的时候却发 ...
- LINQ 查询表达式(C# 编程指南)
语言集成查询 (LINQ) 是一组技术的名称,这些技术建立在将查询功能直接集成到 C# 语言(以及 Visual Basic 和可能的任何其他 .NET 语言)的基础上. 借助于 LINQ,查询现在 ...
- Entity Framework 6 Recipes 2nd Edition(13-6)译 -> 自动编译的LINQ查询
问题 你想为多次用到的查询提高性能,而且你不想添加额外的编码或配置. 解决方案 假设你有如Figure 13-8 所示的模型 Figure 13-8. A model with an Associat ...
- Linq查询基本操作
摘要:本文介绍Linq查询基本操作(查询关键字) - from 子句 - where 子句 - select子句 - group 子句 - into 子句 - orderby 子句 - join 子句 ...
- C#基础:LINQ 查询函数整理
1.LINQ 函数 1.1.查询结果过滤 :where() Enumerable.Where() 是LINQ 中使用最多的函数,大多数都要针对集合对象进行过滤,因此Where()在LINQ 的操作 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (26) ------ 第五章 加载实体和导航属性之延缓加载关联实体和在别的LINQ查询操作中使用Include()方法
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-7 在别的LINQ查询操作中使用Include()方法 问题 你有一个LINQ ...
- Rafy 中的 Linq 查询支持(根据聚合子条件查询聚合父)
为了提高开发者的易用性,Rafy 领域实体框架在很早开始就已经支持使用 Linq 语法来查询实体了.但是只支持了一些简单的.常用的条件查询,支持的力度很有限.特别是遇到对聚合对象的查询时,就不能再使用 ...
- c# Linq查询
c#提供的ling查询极大的遍历了集合的查询过程,且使用简单方便,非常的有用. 下面将分别用简单的例子说明:ling基本查询.延迟查询属性.类型筛选.复合from字句.多级排序.分组查询.联合查询.合 ...
- Linq查询表达式
目录 1. 概述 2. from子句 3. where子句 4. select子句 5. group子句 6. into子句 7. 排序子句 8. let子句 9. join子句 10. 小结 1. ...
随机推荐
- [转]逐步解說:在 WPF 應用程式中使用 ReportViewer 显示 rdlc
本文转自:http://msdn.microsoft.com/zh-tw/library/hh273267 若要在 WPF 應用程式中使用 ReportViewer 控制項,您需要將 ReportVi ...
- 2-SAT的小总结(POJ 3683 POJ 3207)
记住几个最重要的公式: xANDy=0<=>(x=>y′)AND(y=>x′) xANDy=1<=>(x′=>x)AND(y′=>y) xORy=0&l ...
- 题解报告:hdu 1847 Good Luck in CET-4 Everybody!(入门SG值)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1847 Problem Description 大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧 ...
- 酷派改变者S1(C105/C105-6/C105-8) 解锁BootLoader 并刷入recovery root
首先下载好工具链接:https://pan.baidu.com/s/1qZjOCUw 密码:u2dr 备用下载链接:https://pan.baidu.com/s/1pMlmAef 本篇教程教你如何傻 ...
- jq 禁用复选框 和输入框
$('input').attr("readonly", ""); $('input').attr("disabled", "fal ...
- Jenkins 定时 构建项目
选择要定时构建的 项目-->配置-->构建触发器 触发项目: Poll SCM:定时检查源码变更(根据SCM软件的版本号),如果有更新就checkout最新code下来,然后执行构建动作. ...
- 微信小程序中的iPhone X适配问题
微信小程序中的iPhone X适配问题 小程序中下方的导航会被iPhone X下面的那条黑线盖住[微笑脸],所以要专门为了iPhone X做样式上的适配[微笑脸] wx.getSystemInfo({ ...
- vue路由中的 Meta
在项目中肯定有这样的需求,那就是在某个页面的时候,顶部展示 现在当前的页面路径,如下图: 这个在vue中其实很好实现. 首先出现这个肯定是相对应不同的页面,也就是说对应不同的路由,我们在定义路由的时候 ...
- JAVA中浅复制与深复制
1.浅复制与深复制概念⑴浅复制(浅克隆)被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象. ⑵深复 ...
- [POI2012]OKR-A Horrible Poem
正解:对于一个区间l,r,它的循环节长度一定是它的因数. 然后如果循环节是这个长度,那么[l+len,r]一定等于[l,r-len]. 然后每次询问的时候就把它的长度的最小质因子提出来. BZOJ上都 ...