Linq中的一些常用函数的使用总结

上传人:平*** 文档编号:12777465 上传时间:2017-10-20 格式:DOC 页数:7 大小:49KB
返回 下载 相关 举报
Linq中的一些常用函数的使用总结_第1页
第1页 / 共7页
Linq中的一些常用函数的使用总结_第2页
第2页 / 共7页
Linq中的一些常用函数的使用总结_第3页
第3页 / 共7页
Linq中的一些常用函数的使用总结_第4页
第4页 / 共7页
Linq中的一些常用函数的使用总结_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《Linq中的一些常用函数的使用总结》由会员分享,可在线阅读,更多相关《Linq中的一些常用函数的使用总结(7页珍藏版)》请在金锄头文库上搜索。

1、Linq 中的一些常用函数的使用2010-11-24 10:00Select/Distinct 操作符适用场景:o(_)o 查询呗。说明:和 SQL 命令中的 select 作用相似但位置不同,查询表达式中的 select 及所接子句是放在表达式最后并把子句中的变量也就是结果返回回来;延迟。Select/Distinct 操作包括9种形式,分别为简单形式、匿名类型形式、带条件形式、指定类型形式、过滤类型形式、shaped 类型形式、嵌套类型形式、 LocalMethodCall 形式、Distinct 形式。1.简单形式:var q =from c in db.Customersselect

2、c.ContactName;注意:这个语句只是一个声明或者一个描述,并没有真正把数据取出来,只有当你需要该数据的时候,它才会执行这个语句,这就是延迟加载 (deferred loading)。如果,在声明的时候就返回的结果集是对象的集合。你可以使用 ToList() 或 ToArray()方法把查询结果先进行保存,然后再对这个集合进行查询。当然延迟加载(deferred loading)可以像拼接 SQL 语句那样拼接查询语法,再执行它。2.匿名类型形式:说明:匿名类型是 C# 3.0中新特性。其实质是编译器根据我们自定义自动产生一个匿名的类来帮助我们实现临时变量的储存。匿名类型还依赖于另外一

3、个特性:支持根据 property 来创建对象。比如,var d = new Name = s ;编译器自动产生一个有 property 叫做 Name 的匿名类,然后按这个类型分配内存,并初始化对象。但是 var d = new s;是编译不通过的。因为,编译器不知道匿名类中的 property 的名字。例如 string c = d;var d = new c; 则是可以通过编译的。编译器会创建一个叫做匿名类带有叫 c 的 property。例如下例:newc,ContactName,c.Phone;ContactName 和 Phone 都是在映射文件中定义与表中字段相对应的 prope

4、rty。编译器读取数据并创建对象时,会创建一个匿名类,这个类有两个属性,为 ContactName 和 Phone,然后根据数据初始化对象。 另外编译器还可以重命名property 的名字。var q =from c in db.Customersselect new c.ContactName, c.Phone;语句描述:查询顾客的联系人和电话。var q =from e in db.Employeesselect new Name = e.FirstName + + e.LastName, Phone = e.HomePhone;语句描述:查询职员的姓名和家庭电话var q =from p

5、 in db.Productsselect new p.ProductID, HalfPrice = p.UnitPrice / 2;3.带条件形式:说明:生成 SQL 语句为:case when condition then else。var q =from p in db.Productsselect new p.ProductName, Availability = p.UnitsInStock - p.UnitsOnOrder 0.0select od,FreeShippingDiscount = o.Freight;8.LocalMethodCall 形式:var q = from

6、c in db.Customerswhere c.Country = UK | c.Country = USAselect new c.CustomerID, c.CompanyName, Phone = c.Phone, InternationalPhone =PhoneNumberConverter(c.Country, c.Phone) ;XDocument doc = new XDocument(new XElement(Customers, from c in db.Customerswhere c.Country = UK | c.Country = USAselect (new

7、XElement(Customer,new XAttribute(CustomerID, c.CustomerID),new XAttribute(CompanyName, c.CompanyName),new XAttribute(InterationalPhone, PhoneNumberConverter(c.Country, c.Phone);9.Distinct 形式:说明:筛选字段中不相同的值。用于查询不重复的结果集。生成 SQL 语句为:SELECT DISTINCT City FROM Customersvar q = (from c in db.Customers selec

8、t c.City ).Distinct();语句描述:查询顾客覆盖的国家。Count/Sum/Min/Max/Avg 操作符适用场景:统计数据吧,比如统计一些数据的个数,求和,最小值,最大值,平均数。Count说明:返回集合中的元素个数,返回 INT 类型;不延迟。生成 SQL 语句为:SELECT COUNT(*) FROM1.简单形式:var q = db.Customers.Count();2.带条件形式:var q = db.Products.Count(p = !p.Discontinued);LongCount说明:返回集合中的元素个数,返回 LONG 类型;不延迟。对于元素个数较

9、多的集合可视情况可以选用 LongCount 来统计元素个数,它返回 long 类型,比较精确。生成 SQL 语句为:SELECT COUNT_BIG(*) FROMvar q = db.Customers.LongCount();Sum说明:返回集合中数值类型元素之和,集合应为 INT 类型集合;不延迟。生成 SQL 语句为:SELECT SUM() FROM1.简单形式:var q = db.Orders.Select(o = o.Freight).Sum();2.映射形式:var q = db.Products.Sum(p = p.UnitsOnOrder);Min说明:返回集合中元素的

10、最小值;不延迟。生成 SQL 语句为:SELECT MIN() FROM1.简单形式:var q = db.Products.Select(p = p.UnitPrice).Min();2.映射形式:var q = db.Orders.Min(o = o.Freight);3.原理:var categories =from p in db.Productsgroup p by p.CategoryID into gselect new CategoryID = g.Key,CheapestProducts =from p2 in gwhere p2.UnitPrice = g.Min(p3 =

11、 p3.UnitPrice)select p2;Max说明:返回集合中元素的最大值;不延迟。生成 SQL 语句为:SELECT MAX() FROM1.简单形式:var q = db.Employees.Select(e = e.HireDate).Max();2.映射形式:var q = db.Products.Max(p = p.UnitsInStock);3.原理:var categories =from p in db.Productsgroup p by p.CategoryID into gselect new g.Key,MostExpensiveProducts =from p

12、2 in gwhere p2.UnitPrice = g.Max(p3 = p3.UnitPrice)select p2;Average说明:返回集合中的数值类型元素的平均值。集合应为数字类型集合,其返回值类型为double;不延迟。生成 SQL 语句为:SELECT AVG() FROM1.简单形式:var q = db.Orders.Select(o = o.Freight).Average();2.映射形式:var q = db.Products.Average(p = p.UnitPrice);3.原理:var categories =from p in db.Productsgrou

13、p p by p.CategoryID into gselect new g.Key,ExpensiveProducts =from p2 in gwhere p2.UnitPrice g.Average(p3 = p3.UnitPrice)select p2;Aggregate说明:根据输入的表达式获取聚合值;不延迟。即是说:用一个种子值与当前元素通过指定的函数来进行对比来遍历集合中的元素,符合条件的元素保留下来。如果没有指定种子值的话,种子值默认为集合的第一个元素。下面用一个表格总结一下这篇说的 LINQ 语句Where 过滤;延迟Select 选择;延迟Distinct 查询不重复的结果集;延迟Count 返回集合中的元素个数,返回 INT 类型;不延迟LongCount 返回集合中的元素个数,返回 LONG 类型;不延迟Sum 返回集合中数值类型元素之和,集合应为 INT 类型集合;不延迟Min 返回集合中元素的最小值;不延迟Max 返回集合中元素的最大值;不延迟Average 返回集合中的数值类型元素的平均值。集合应为数字类型集合,其返回值类型为 double;不延迟Aggregate 根据输入的表达式获取聚合值;不延迟

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号