LINQ to SQL语句(9)之Top/Bottom和Paging和SqlMethods

时间:2021-12-20 01:56:03

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

Take

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

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

语句描述:选择所雇用的前5个雇员。

Skip

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

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

语句描述:选择10种最贵产品之外的所有产品。

TakeWhile

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

SkipWhile

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

Paging(分页)操作

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

1.索引

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

语句描述:使用Skip和Take运算符进行分页,跳过前50条记录,然后返回接下来10条记录,因此提供显示Products表第6页的数据。

2.按唯一键排序

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

语句描述:使用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) <
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 to SQL语句(9)之Top/Bottom和Paging和SqlMethods的更多相关文章

  1. LINQ to SQL语句之Union All&sol;Union&sol;Intersect和Top&sol;Bottom和Paging和SqlMethods

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

  2. LINQ体验&lpar;8&rpar;——LINQ to SQL语句之Union All&sol;Union&sol;Intersect和Top&sol;Bottom和Paging和SqlMethods

    我们继续解说LINQ to SQL语句,这篇我们来讨论Union All/Union/Intersect操作和Top/Bottom操作和Paging操作和SqlMethods操作 . Union Al ...

  3. C&num;Linq中的Union All&sol;Union&sol;Intersect和Top&sol;Bottom和Paging和SqlMethods&comma;skip&comma;take&comma;takewhile&comma;skipwhile&comma;编译查询等

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

  4. &lbrack;转&rsqb;C&num;Linq中的Union All&sol;Union&sol;Intersect和Top&sol;Bottom和Paging和SqlMethods&comma;skip&comma;take&comma;takewhile&comma;skipwhile&comma;编译查询等

    本文转自:http://www.cnblogs.com/suizhikuo/p/3791799.html 我们继续讲解LINQ to SQL语句,这篇我们来讨论Union All/Union/Inte ...

  5. 年终巨献 史上最全 ——LINQ to SQL语句

    LINQ to SQL语句(1)之Where 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句.Where操 ...

  6. LINQ to SQL语句非常详细(原文来自于网络)

    LINQ to SQL语句(1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子 ...

  7. LINQ to SQL语句

    http://kb.cnblogs.com/page/42477/2/ 本系列文章导航 LINQ to SQL语句(1)之Where LINQ to SQL语句(2)之Select/Distinct ...

  8. LINQ to SQL语句对应SQL的实现

    LINQ to SQL语句(1)之Where LINQ to SQL语句(2)之Select/Distinct LINQ to SQL语句(3)之Count/Sum/Min/Max/Avg LINQ ...

  9. LINQ to SQL语句大全

    LINQ to SQL语句大全     LINQ to SQL语句(1)之Where 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判 ...

随机推荐

  1. C&plus;&plus;析构函数定义为虚函数&lpar;转载&rpar;

    转载:http://blog.csdn.net/alane1986/article/details/6902233 析构函数执行时先调用派生类的析构函数,其次才调用基类的析构函数.如果析构函数不是虚函 ...

  2. PHP中mysql&lowbar;affected&lowbar;rows&lpar;&rpar;和mysql&lowbar;num&lowbar;rows&lpar;&rpar;区别

    mysql_affected_rows -- 取得前一次 MySQL 操作所影响的记录行数mysql_num_rows -- 函数返回结果集中行的数目. config.php <?php hea ...

  3. nginx 504 Gateway Time-out错误解决办法

    我们经常会发现大量的nginx服务器访问时会提示nginx 504 Gateway Time-out错误了,下面我来总结了一些解决办法,有需要了解的同学可进入参考. 一般看来, 这种情况可能是由于ng ...

  4. Hbase结构简单、作法

    Hbase架构简单介绍.实践 版权声明:本文博主原创文章,博客,未经同意不得转载.

  5. Linux之shell编程函数使用

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 原文和作者一起讨论:http://www.cnblogs.com/int ...

  6. CocoaPods配置步骤

    1.cd  空格 把你的工程文件夹推进去  回车 2.然后输入vi Podfile 3.然后 i  进入插入模式  吧东西粘贴进去 platform :ios, '7.0' pod 'GCJSONKi ...

  7. python识别图片文字

    因为学校要求要刷一门叫<包装世界>的网课,而课程里有200多道选择题,而且只能在手机完成,网页版无法做题,而看视频是不可能看视频的,这辈子都不可能看...所以写了几行代码来进行百度搜答案. ...

  8. ASP&period;NET 4&period;0验证请求 System&period;Web&period;HttpRequestValidationException&colon; A potentially dangerous Request&period;F

    System.Web.HttpRequestValidationException: A potentially dangerous Request.F 在使用类似eWebedtior 拷贝内容进去的 ...

  9. 随意下载:afinal jar

    刚才用到afinal,下载jar包到处要积分啥的,我花钱下载了,现在免费给兄弟们 链接: https://pan.baidu.com/s/1BmB-06ui1D2BfooUCi6xKg 提取码: m3 ...

  10. Android 9&period;0&sol;P 开发问题及解决方案汇总

    一.使用 org.apache.http.legacy 库在Android 9.0上运行出现崩溃 日志内容: java.lang.NoClassDefFoundError: Failed resolu ...