• Linq to SQL语句之Top/Bottom和Paging分页和SqlMethods


    Top/Bottom和Paging分页和SqlMethods

    1、Top/Bottom操作(Take,Skip)

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

    1.Take

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

    var q = (

    from e in db.Employees

    orderby e.HireDate

    select e)

    .Take(5);

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

    2.Skip

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

    var q = (

    from p in db.Products

    orderby p.UnitPrice descending

    select p).Skip (10);

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

    3.TakeWhile

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

    4.SkipWhile

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

    2、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页的数据。请注意,此方法仅适用于按唯一键排序的情况。

    3、SqlMethods操作

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

    1.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;

    2.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 天内已发货的所有订单。

    3.已编译查询操作(Compiled Query)

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

    1. 创建compiled query

    NorthwindDataContext db = newNorthwindDataContext();

    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");

    语句描述:这个例子创建一个已编译查询,然后使用它检索输入城市的客户。

    这是我所学到的一些知识,在此分享给大家,希望可以帮助到你们。

    以上就是我的分享,新手上道,请多多指教。如果有更好的方法或不懂得地方欢迎在评论区教导和提问喔!

  • 相关阅读:
    智能交通和自动驾驶技术
    IMX6ULL + SPI LCD(驱动IC ILI9341)显示简单的QT界面
    【单片机】实验:数码管显示实验
    电商图片采集-免费批量电商图片采集软件
    计算机组成原理——总线(课程笔记)
    0038__一文看懂NB-IOT/Lora/Zigbee三大技术的组网方式
    李开复和马斯克加入AGI大模型大战 零一万物和Grok有哪些特点
    卷积神经网络
    Typescript语言基础
    湖南互联网医院|湖南互联网医院牌照办理流程及材料
  • 原文地址:https://blog.csdn.net/weixin_57739423/article/details/126577457