-------适合自己的才是最好的!!!

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查询知识总结的更多相关文章

  1. LinqToDB 源码分析——轻谈Linq查询

    LinqToDB框架最大的优势应该是实现了对Linq的支持.如果少了这一个功能相信他在使用上的快感会少了一个层次.本来笔者想要直接讲解LinqToDB框架是如何实现对Linq的支持.写到一半的时候却发 ...

  2. LINQ 查询表达式(C# 编程指南)

    语言集成查询 (LINQ) 是一组技术的名称,这些技术建立在将查询功能直接集成到 C# 语言(以及 Visual Basic 和可能的任何其他 .NET 语言)的基础上.  借助于 LINQ,查询现在 ...

  3. Entity Framework 6 Recipes 2nd Edition(13-6)译 -> 自动编译的LINQ查询

    问题 你想为多次用到的查询提高性能,而且你不想添加额外的编码或配置. 解决方案 假设你有如Figure 13-8 所示的模型 Figure 13-8. A model with an Associat ...

  4. Linq查询基本操作

    摘要:本文介绍Linq查询基本操作(查询关键字) - from 子句 - where 子句 - select子句 - group 子句 - into 子句 - orderby 子句 - join 子句 ...

  5. C#基础:LINQ 查询函数整理

    1.LINQ 函数   1.1.查询结果过滤 :where() Enumerable.Where() 是LINQ 中使用最多的函数,大多数都要针对集合对象进行过滤,因此Where()在LINQ 的操作 ...

  6. 《Entity Framework 6 Recipes》中文翻译系列 (26) ------ 第五章 加载实体和导航属性之延缓加载关联实体和在别的LINQ查询操作中使用Include()方法

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-7  在别的LINQ查询操作中使用Include()方法 问题 你有一个LINQ ...

  7. Rafy 中的 Linq 查询支持(根据聚合子条件查询聚合父)

    为了提高开发者的易用性,Rafy 领域实体框架在很早开始就已经支持使用 Linq 语法来查询实体了.但是只支持了一些简单的.常用的条件查询,支持的力度很有限.特别是遇到对聚合对象的查询时,就不能再使用 ...

  8. c# Linq查询

    c#提供的ling查询极大的遍历了集合的查询过程,且使用简单方便,非常的有用. 下面将分别用简单的例子说明:ling基本查询.延迟查询属性.类型筛选.复合from字句.多级排序.分组查询.联合查询.合 ...

  9. Linq查询表达式

    目录 1. 概述 2. from子句 3. where子句 4. select子句 5. group子句 6. into子句 7. 排序子句 8. let子句 9. join子句 10. 小结 1. ...

随机推荐

  1. LeetCode Weekly Contest 28

    1. 551. Student Attendance Record I 2. 552. Student Attendance Record II hihocode原题,https://hihocode ...

  2. jquery.validate验证text,checkbox,radio,selected

    index.cshtml <form id="formLogin" method="post"> <div> <label for ...

  3. HttpServletResponse对象,自己学习的心得

    Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象,和代表响应response对象. request和response对象既然代表请求和响应,那我们要 ...

  4. 【java基础】(1)Java的权限修饰符(public,protected,default,private)

    访问权限修饰符权限从高到低排列是public  ,protected  ,default, private. 一.根据“是否是同包”.“是否是子类”分为4中情况+本类 5种情况 二.把 同包中的子类 ...

  5. intellij 创建java web项目(maven管理的SSH)

    intellij 创建java web项目(maven管理的SSH) 环境intellij IDEA14.MAVEN.Spring.Struts2.Hibernate.Java Web.工程搭建. 1 ...

  6. poj1328 Radar Installation 区间贪心

    题目大意: 在X轴选择尽量少的点作为圆心,作半径为d的圆.使得这些圆能覆盖所有的点. 思路: 把每个点都转化到X轴上.也就是可以覆盖这个点的圆心的位置的范围[a,b].然后按照每个点对应的a从小到大排 ...

  7. DE2之7-segment displays

    以前课题用的是友晶的DE2-70,现在重拾FPGA,选了一款性价比高的DE2.恰逢闲来无事,于是尝试将各个Verilog模块翻译成VHDL,半算回顾以前的知识,半算练习VHDL. Verilog 01 ...

  8. dubbo之本地存根

    本地存根 远程服务后,客户端通常只剩下接口,而实现全在服务器端,但提供方有些时候想在客户端也执行部分逻辑,比如:做 ThreadLocal 缓存,提前验证参数,调用失败后伪造容错数据等等,此时就需要在 ...

  9. AI:IPPR的数学表示-CNN可视化语义分析

    前言: ANN是个语义黑箱的意思是没有通用明确的函数表示,参数化的模型并不能给出函数的形式,更进而不能表示函数的实际意义. 而CNN在图像处理方面具有天然的理论优势,而Conv层和Polling层,整 ...

  10. Nginx服务的地址重写

    调整Nginx服务器配置,实现: 1.所有访问a.html的请求,重定向到b.html; 2.所有访问Nginx服务器(192.168.4.1)的请求重定向至www.baidu.com: 3.所有访问 ...