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

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. 语法错误1:TabError: Inconsistent use of tabs and spaces in indentation

    如图错误: 出错原因: 由于写代码过程用的tab缩进 解决方法: 把tab缩进改用空格缩进

  2. Foeach 时修改集合的值报错

    就是"集合已修改:可能无法执行枚举操作 foreach" 啥的, 不让我改 百度到Foreach是只读的,只供取值用,无法进行新增,修改,删除(仅引用,实际待验证) 解决办法:将F ...

  3. Entity Framework Code First -- 延迟加载和预先加载

    还是以这两个表为例子 country包含零个或多个city, 这个外键关系是我后来加上去,原来没有. 然后再用Power Tool逆向, 产生如下代码 1: using System.Componen ...

  4. java编程基础篇---------> 编写一个程序,从键盘输入三个整数,求三个整数中的最小值。

    编写一个程序,从键盘输入三个整数,求三个整数中的最小值. 关键:声明变量temp   与各数值比较. package Exam01; import java.util.Scanner; public ...

  5. Maya API编程快速入门

    一.Maya API编程简介 Autodesk® Maya® is an open product. This means that anyone outside of Autodesk can ch ...

  6. The as! Operator

    Prior to Swift 1.2, the as operator could be used to carry out two different kinds of conversion, de ...

  7. php 加密解密函数封装

    算法一: //加密函数 function lock_url($txt,$key='yang') { $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi ...

  8. transparent

    transparent属性用来指定全透明色彩

  9. kmp板子

    kmp 容易理解板子 详情见知乎 算法思想 对模式串求PMT,但实际上nxt数组是PMT向前移动一位 nxt数组含义:记母串为m[],模式串为p[]; m[i]与p[j]比较失配,需要比较m[i]与p ...

  10. vue scss 安装

    1.开始在vue项目中使用sass,在命令行输入一下命令进行安装(使用git命令行要用shift+insert 进行粘贴否则粘贴不上) cnpm install node-sass --save-de ...