2012-03-01 88 views
0

有沒有人可以告訴如何使用DbContext做服務器端分頁和orderby功能。我用Where子句來過濾記錄。需要類似的東西,以便我只能得到有限數量的記錄。服務器端分頁和OrderBy與DbContext

在此先感謝

+0

退房http://stackoverflow.com/questions/3870091/entity-framework-linq-to-sql-skip-take – Matthew 2012-03-01 15:48:42

+0

喜,我的倉庫中沒有MyDbContext。如何去做呢? – afr0 2012-03-01 16:03:49

回答

0

您可以在EF使用SkipTop生成器方法,或者調用OrderBy後使用LINQ SkipTake做到這一點。

+0

這就是我想要做 'code' 的IQueryable LoadData(表達>過濾器= NULL,Func鍵,IOrderedQueryable >的OrderBy = NULL, INT當前頁= 0,INT的pageSize = 0,字符串includeProperties =「」) {IQueryable query = _context.Set ().Where(filter).AsNoTracking(); IOrderedQueryable orderedQuery; IQueryable returnValue = null; if(orderBy!= null) query = orderBy(query); (頁面大小> 0) returnValue = query.Skip((currentPage - 1)* pageSize).Take(pageSize).AsQueryable(); return returnValue;} 'code' – afr0 2012-03-01 16:00:25

1

檢查此解決方案。可能是它你要找的東西:

public const int PAGE_SIZE = 10; 
protected void LinqDataSource1_Selecting(object sender, LinqDataSourceSelectEventArgs e) 
{ 
// LINQ query 
    var query = from m in db.Products 
    select m; 
    // Set the total count 
    // so GridView knows how many pages to create 
    e.Arguments.TotalRowCount = query.Count(); 
    // Get only the rows we need for the page requested 
    query = query.Skip(GridView1.PageIndex * PAGE_SIZE).Take(PAGE_SIZE); 
    e.Result = query; 
} 

Effective Paging using LINQ

+0

雖然這可能在理論上回答這個問題,這將是更好的](http://meta.stackexchange.com/q/8259)在這裏包括答案的基本部分,並提供鏈接供參考。 – Taryn 2013-03-05 14:06:22