簡體   English   中英

Linq to Entities Skip()和Take()

[英]Linq to Entities Skip() and Take()

我正在開發一個ASP.NET應用程序,我正在創建一個LINQ查詢,它將從db中選擇分頁記錄。 在用戶界面上我有一個列表框,用戶可以在其中選擇多個選項。 我想知道:

  • 如何增加Skip(),Take()參數以查看下一個結果?

  • 如何使用“IN”關鍵字,以便如果用戶從列表框中選擇多個選項,查詢可以檢查所有值?

我的查詢如下所示:

var searchResults = context.data_vault.Where(d => d.STATE == lstStates.SelectedItem.Text).OrderBy(d= > d.dv_id).Take(10).Skip(2);    
GridView1.DataSource = searchResults;
GridView1.DataBind();

我認為你正在使用Skip錯誤。 它應該在Take之前。

跳過多個記錄,因此對於第一頁,傳入0,否則傳遞(頁碼 - 1)*每頁*記錄。

我通常做這樣的事情:

int Page = 1;
int RecordsPerPage = 10;
var q = yourQuery.Skip((Page - 1) * RecordsPerPage).Take(RecordsPerPage);

您需要先在GridView上打開分頁。 然后在PageIndexChanging事件:

var result = db.Where(...)
               .Skip(e.NewPageIndex * grid.PageSize)
               .Take(grid.PageSize)
               .ToList(); // this is very important part too

要模擬IN行為:

var selection = list.SelectedItems.Select(i => i.Text).ToArray();
var result = db.Where(x => selection.Contains(x.Prop));

試試這個:

   int temp = (CurrentPageNumber - 1) * 10;
    var searchResults = context.data_vault.Where(d => d.STATE == lstStates.SelectedItem.Text).OrderBy(d= > d.dv_id).Skip(temp).Take(10);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM