All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
SQL,Server,7.0,入门(四)_mssql学习_编程技术
PHP应用技巧小总结:几个有用的小技巧_[PHP教程]
2003 下 IIS+PHP+MySQL+Zend Optimize_[PHP教程]
使用 JavaScript 和 Ajax 发出异步请求_[AJAX教程]
C#几种常用的排序算法_.net资料_编程技术
ASP.NET技巧:ASP.NET2.0泛型和匿名方法_[Asp.Net教程]
浅析CMS内容管理系统的两种方案之二_[Asp.Net教程]
编辑web.config,保证ASP.NET的安全_.net资料_编程技术
ASP.NET,2.0页面性能的考虑_.net资料_编程技术
C#MD5算法_[Asp.Net教程]
Reading number is top 10 pictures
China's first snake village3
2015中美最新武器装备巅峰对决!
The world first motorcycle will be auctioned for 21000 pounds
贩卖儿童者必须判死刑
青春清纯美女大集合3
Very beautiful interior decoration
Fierce! China's special forces training the devil2
这还能睡得着?
The money of more than 100 countries and regions19
水晶头骨造型的酒瓶
Download software ranking
Professional killers2 for Android
Tram sex maniac 2 (H) rar bag13
美女写真3
Visual C++界面编程技术
株洲本地在线棋牌游戏
Sora aoi, the nurse, uniform ,nursing assistant
asp.netWeb服务器高级编程
Unix video tutorial2
Unix video tutorial17
WebService在.NET中的实战应用教学视频 → 第4集
归海一刀 published in(发表于) 2014/1/30 1:03:25 Edit(编辑)
LINQ体验(8)——LINQ,to,SQL语句之Union,All,、Union、,Intersect

LINQ体验(8)——LINQ,to,SQL语句之Union,All,、Union、,Intersect

LINQ体验(8)——LINQ to SQL语句之Union All/Union/Intersect_[Asp.Net教程]

LINQ体验(8)——LINQ to SQL语句之Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods


我们继续讲解LINQ语句,这篇我们来讨论Union All/Union/Intersect操作和Top/Bottom操作和Paging操作和SqlMethods操作。


Union All/Union/Intersect操作


适用场景:对两个集合的处理,例如追加、合并、取相同项、相交项等等。


Concat(连接)


说明:连接不同的集合,不会自动过滤相同项;延迟。


1.简单形式:

var q = (
from c in db.Customers
select c.Phone
).Concat(
from c in db.Customers
select c.Fax
).Concat(
from e in db.Employees
select e.HomePhone
);

语句描述:返回所有消费者和雇员的电话和传真。


2.复合形式:

var q = (
from c in db.Customers
select new {Name = c.CompanyName, c.Phone}
).Concat(
from e in db.Employees
select new {Name = e.FirstName + " " + e.LastName, Phone = e.HomePhone}
);

语句描述:返回所有消费者和雇员的姓名和电话。


Union(合并)


说明:连接不同的集合,自动过滤相同项;延迟。即是将两个集合进行合并操作,过滤相同的项。

var q = (
from c in db.Customers
select c.Country
).Union(
from e in db.Employees
select e.Country
);

语句描述:查询顾客和职员所在的国家。


Intersect(相交)


说明:取相交项;延迟。即是获取不同集合的相同项(交集)。即先遍历第一个集合,找出所有唯一的元素,然后遍历第二个集合,并将每个元素与前面找出的元素作对比,返回所有在两个集合内都出现的元素。

var q = (
from c in db.Customers
select c.Country
).Intersect(
from e in db.Employees
select e.Country
);

语句描述:查询顾客和职员同在的国家。


Except(与非)


说明:排除相交项;延迟。即是从某集合中删除与另一个集合中相同的项。先遍历第一个集合,找出所有唯一的元素,然后再遍历第二个集合,返回第二个集合中所有未出现在前面所得元素集合中的元素。

var q = (
from c in db.Customers
select c.Country
).Except(
from e in db.Employees
select e.Country
);

语句描述:查询顾客和职员不同的国家。


Top/Bottom操作


适用场景:适量的取出自己想要的数据,不是全部取出,这样性能有所加强。


Take


说明:获取集合的前n个元素;延迟。即只返回限定数量的结果集。

var q = (
from e in db.Employees
orderby e.HireDate
select e)
.Take(5);

语句描述:查询出最早5位雇用的雇员。


Skip


说明:跳过集合的前n个元素;延迟。即我们跳过给定的数目返回后面的结果集。

var q = (
from p in db.Products
orderby p.UnitPrice descending
select p)
.Skip(10);

语句描述:查询出10个最贵的产品。


TakeWhile


说明:直到某一条件成立就停止获取;延迟。即用其条件去依次判断源序列中的元素,返回符合判断条件的元素,该判断操作将在返回false或源序列的末尾结束 。


SkipWhile


说明:直到某一条件成立就停止跳过;延迟。即用其条件去判断源序列中的元素并且跳过第一个符合判断条件的元素,一旦判断返回false,接下来将不再进行判断并返回剩下的所有元素。


Paging(分页)操作


适用场景:结合Skip和Take就可实现对数据分页操作。

var q = (
from c in db.Customers
orderby c.ContactName
select c)
.Skip(50)
.Take(10);

语句描述:跳过前50条记录,取出接下来的10条记录,形成乘积表在第6页显示。

var q = (
from p in db.Products
where p.ProductID > 50
orderby p.ProductID
select p)
.Take(10);

SqlMethods操作


在LINQ to SQL语句中,为我们提供了SqlMethods操作,进一步为我们提供了方便,例如Like方法用于自定义通配表达式,Equals用于相比较是否相等。


Like


自定义的通配表达式。%表示零长度或任意长度的字符串;_表示一个字符;[]表示在某范围区间的一个字符;[^]表示不在某范围区间的一个字符。比如查询消费者ID以“C”开头的消费者。

var q = from c in db.Customers
where SqlMethods.Like(c.CustomerID, "C%")
select c;

比如查询消费者ID没有“AXOXT”形式的消费者:

var q = from c in db.Customers
where !SqlMethods.Like(c.CustomerID, "A_O_T")
select c;

DateDiffDay


说明:在两个变量之间比较。分别有:DateDiffDay、DateDiffHour、DateDiffMillisecond、DateDiffMinute、DateDiffMonth、DateDiffSecond、DateDiffYear

var q = from o in db.Orders
where SqlMethods.DateDiffDay(o.OrderDate, o.ShippedDate) < 10
select o;

语句描述:查询所有10天之内的订单。


Compiled Query(查询编辑)操作


说明:在之前我们没有好的方法对写出的SQL语句进行编辑重新查询,现在我们可以这样做,看下面一个例子:

//1.创建compiled query
NorthwindDataContext db = new NorthwindDataContext();
var fn = CompiledQuery.Compile((NorthwindDataContext db2, string city) =>
from c in db2.Customers
where c.City == city
select c);
//2.查询城市为London的消费者,用LonCusts集合表示,这时可以用数据绑定控件绑定
var LonCusts = fn(db, "London");
//3.查询城市为Seattle的消费者
var SeaCusts = fn(db, "Seattle");






添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.