转:c# Linq 的分页[转]
转:http://www.cnblogs.com/leleroyn/archive/2008/05/14/1196811.html
很多学习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
转:c# Linq 的分页[转]的更多相关文章
- Linq的分页
真有趣. C#里面的List对象.set对象,都可以直接使用Linq(这是因为,它们都实现了接口IEnumable?),比如说:Where().OrderBy()什么的.假如有点SQL基础的人,一看这 ...
- [转]在Entity Framework中使用LINQ语句分页
本文转自:http://diaosbook.com/Post/2012/9/21/linq-paging-in-entity-framework 我们知道,内存分页效率很低.并且,如果是WebForm ...
- C#/Entity Frame Core 使用Linq 进行分页 .Skip() .Take() 的使用方法
一般使用格式为 int pagesize = 分页大小(每一页大小)int pageindex = 第几页(一般这个变量是随循环递增的) 使用方法.Skip(pagesize*pageindex).T ...
- Linq的分页与组合查询的配合使用
1.首先使用Linq连接数据库,并扩展属性 public partial class User { public string SexStr { get { string end = "&l ...
- MVC linq语法分页
分页效果图: 表格下面的分页按钮样式是我自己做的一个样式,这4个按钮都是用同一张图片:这张图片是用ps做的. 接下来我们说一下怎么去做这个样式 第一css代码: ._HomePage,._Previo ...
- linq动态分页排序
if (!string.IsNullOrEmpty(order) && !string.IsNullOrEmpty(dir))//判断排序的字段名称和排序的类型是否为空 { if (d ...
- C# SQL优化 及 Linq 分页
每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦逼就是沉默.我眼中的程序员大多都不 ...
- linq to sql 分页技术
昨天在用LINQ写分页的时候碰到一个很奇怪的问题:翻页的时候,有的数据会莫名其妙地消失,查了半个多小时才发现问题所在,其实是一个很细节的地方. 数据表如下: LINQ分页的实现是: var artic ...
- MongoDB .Net Driver(C#驱动) - 内嵌数组/嵌入文档的操作(增加、删除、修改、查询(Linq 分页))
目录 一.前言 1. 运行环境 二.前期准备工作 1. 创建 MongoDBContext MongoDb操作上下文类 2.创建测试类 3.创建测试代码 三.内嵌数组增加元素操作 1.Update.S ...
随机推荐
- iOS 滑动比较
对iOS手机进行滑动操作进行总结:1.mobile:scroll向下滚动整个屏幕driver.execute_script('mobile: scroll', {'direction': 'down' ...
- 微软Charting图表控件 System.Web.UI.DataVisuliztion.Charting
一.概述 基于.NET Framework 3.5 SP1的图表控件--Chart,可在WinForm和WebForm下使用!需要引入System.Web.DataVisualization.dll ...
- Inno Setup新建项目
一.准备一个例子工程WEI 运行起来是这样的 二.开始新建 使用Inno Setup Compiler或Inno Script Studio新建都可以,我这里先用Inno Setup Compiler ...
- 5、Web Service-整合CXF
1.工程准备 继续使用之前的服务端:https://www.cnblogs.com/Mrchengs/p/10562458.html 2.jar准备 前去apache官网下载响应的jar:http:/ ...
- [Python 多线程] RLock可重入锁 (九)
RLock 可重复锁,是线程相关的锁.同样是线程相关的还有threading.local. 线程A获得可重用锁,并可以多次成功获取,不会阻塞.最后要再线程A中和acquire次数相同的release. ...
- Linux常用监控服务器性能命令
列举比较常用的几种监控服务器性能的Linux命令.其实,在我看来,目前针对Linux系统内存.硬盘.TCP/IP等等相关的指标,Linux本身自带的或者是一些开源项目等基本上都能达到这个获取服务器性能 ...
- 无网络环境下使用docker加载镜像
无网络环境下使用docker加载镜像 你需要做的主要有3步骤: 先从一个有网络的电脑下载docker镜像 [root@localhost ~]# docker pull hub.c.163.com ...
- 翻译 TI SerialBLEbridge V 1.4.1
原文地址:http://processors.wiki.ti.com/index.php/SerialBLEbridge_V_1.4.1 Sample App Overview This page d ...
- POJ 3762 The Bonus Salary!(最小K覆盖)
POJ 3762 The Bonus Salary! 题目链接 题意:给定一些任务.每一个任务有一个时间,有k天.一个时间仅仅能运行一个任务,每一个任务有一个价值.问怎么安排能得到最多价值 思路:典型 ...
- 创建ASM实例及ASM数据库(转载)
--======================== -- 创建ASM实例及ASM数据库 --======================== 一.ASM相关概念 1.什么是ASM(Auto Stor ...