Linq 的分頁討論

2021-09-22 04:29:27 字數 1991 閱讀 6773

廢話不數,直入主題,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.20***.x

Linq 的分頁討論

很多學習linq的朋友肯定有自己所不同的方法,考慮這個問題我所想到的是 用take skip takewhile skipuntil 中的方法來實現 首先看take 是否可用 take方法的作用是從結果中取固定數量的值,mydbdatacontext mydb new mydbdatacontext...

linq高階查與分頁

前台 page language c autoeventwireup true codefile linq資料顯示.aspx.cs inherits linq資料顯示 css body xuanze table head mian td 後台 using system using system.co...

對於mongodb實現分頁的討論

對於mongodb實現分頁的討論 group缺點 www.2cto.com 1.group語句在sharded?模式下無法使用 2.group?要求返回的結果集 10000 3.group 沒有limit 和 skip 限制操作.4.分頁場景下,每點乙個分頁鏈結都會觸發一次聚合操作 優點 1.小結果...