zoukankan      html  css  js  c++  java
  • Linq 分页

    很多学习Linq的朋友肯定有自己所不同的方法,考虑这个问题我所想到的是

    用Take(),Skip(),TakeWhile(),SkipUntil()中的方法来实现

    首先看Take()是否可用

    Take方法的作用是从结果中取固定数量的值,

    MydbDataContext mydb=new MydbDataContext("server=.;database=mydb");

    var query=from p in mydb.Products
                   orderby p.id descending
                   select p;//取出Products中所用的项按降序排列
    如果直接用 take()

    var q=query.take(n) 这样只能取出前条n记录,但是还是让我们看到了分页的曙光,还是还有个skip吗,skip可以取出除去满足条件的剩下的记录。如果我们要把数据以每页 pagesize的数量来进行分页,很简单,很skip(pagersize*pagenum)然后在剩下的记录中take(pagesize)不就得到 了想要的数据了么。

    varq=query.skip(pagesize*pagenum).take(pagesize) 就这么简单。

    希望朋友们提供更好的方法来进行分页,同时对这个方法的优劣性,进行批评指导
    附上运行时生成的SQL(感谢紫色阴影Boler Guo
    sql server2000:
    SELECT TOP 20 [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Address], [t0].[City], [t0].[Region], [t0].[PostalCode], [t0].[Country], [t0].[Phone], [t0].[Fax]
    FROM [dbo].[Customers] AS [t0]
    WHERE NOT (EXISTS(
    SELECT NULL AS [EMPTY]
    FROM (
    SELECT TOP 10 [t1].[CustomerID]
    FROM [dbo].[Customers] AS [t1]
    ) AS [t2]
    WHERE [t0].[CustomerID] = [t2].[CustomerID]
    ))
    sql server 2005
    SELECT TOP 10 [t1].[CustomerID], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Address], [t1].[City], [t1].[Region], [t1].[PostalCode], [t1].[Country], [t1].[Phone], [t1].[Fax]
    FROM (
    SELECT ROW_NUMBER() OVER (ORDER BY [t0].[ContactName]) AS [ROW_NUMBER], [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Address], [t0].[City], [t0].[Region], [t0].[PostalCode], [t0].[Country], [t0].[Phone], [t0].[Fax]
    FROM [dbo].[Customers] AS [t0]
    ) AS [t1]
    WHERE [t1].[ROW_NUMBER] > @p0
    ORDER BY [t1].[ContactName]
    -- @p0: Input Int32 (Size = 0; Prec = 0; Scale = 0) [50]
    -- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.20XXX.X
    作者:KKcat
        
    个人博客:http://jinzhao.me/
        
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Win10 下使用 ionic 框架开发 android 应用之搭载开发环境
    C# 图片压缩
    [安卓应用发布]HOLO一键锁屏
    SRS中增加身份验证
    实际搭建SRS测试的初步问题总结
    推荐一款优秀的开源流媒体服务器系统:SRS(Simple RTMP Server)
    C#--格式化数值数据
    操作系统学习笔记系列(二)-操作系统结构
    操作系统学习笔记系列(一)- 导论
    C语言文件读写
  • 原文地址:https://www.cnblogs.com/jinzhao/p/1723700.html
Copyright © 2011-2022 走看看