LINQ to SQL语句(8)之Top/Bottom和Paging和SqlMethods
2012-03-06 11:20
447 查看
LINQ to SQL语句(9)之Top/Bottom和Paging和SqlMethods
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就可实现对数据分 页操作。1.索引
var q = (from c in db.Customers
orderby c.ContactName
select c)
.Skip(50)
.Take(10);
语句描述:使用Skip和Take运算 符进行分页,跳过前50条记录,然后返回接下来10条记录,因此提供显示 Products表第6页的数据。
2.按唯一键排序
var q = (from p in db.Products
where p.ProductID > 50
orderby p.ProductID
select p)
.Take(10);
语 句描述:使用Where子句和Take运算符进行分页,首先筛选得到仅50 (第5页最后 一个ProductID)以上的ProductID,然后按ProductID排序,最后取前10个结果, 因此提供Products表第6页的数据。请注意,此方法仅适用于按唯一键排序的情 况。
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");
语句描述:这个例子创建一个已编译查询, 然后使用它检索输入城市的客户。
相关文章推荐
- LINQ体验(8)——LINQ to SQL语句之Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods
- LINQ to SQL语句(9)之Top/Bottom和Paging和SqlMethods
- LINQ体验(8)——LINQ to SQL语句之Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods
- LINQ体验(8)——LINQ to SQL语句之Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods
- LINQ体验(8)——LINQ to SQL语句之Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods
- LINQ to SQL语句(9)之Top/Bottom和Paging和SqlMethods
- LINQ体验(8)——LINQ to SQL语句之Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods
- LINQ体验(8)——LINQ to SQL语句之Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods
- LINQ体验(8)——LINQ to SQL语句之Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods
- LINQ体验(8)——LINQ to SQL语句之Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods
- LINQ to SQL语句(9)之Top/Bottom和Paging和SqlMethods
- LINQ to SQL语句之Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods
- LINQ体验(8)——LINQ to SQL语句之Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods
- LINQ to SQL语句之 Top/Bottom/Paging/SqlMethods
- [转]LINQ体验(8)——LINQ语句之Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods
- LINQ体验(8)--LINQ to SQL语句之Union All/Union/Intersect和Top/Bottom和P...
- LINQ体验(8)--LINQ to SQL语句之Union All/Union/Intersect和Top/Bottom和P...
- [.net]LINQ体验(5)——LINQ语句之Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods (转)
- LINQ 之Top/Bottom、Paging、SqlMethods
- [转]C#Linq中的Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods,skip,take,takewhile,skipwhile,编译查询等