Dot*_*row 8 c# linq asp.net linq-to-entities entity-framework
我正在开发一个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();
Run Code Online (Sandbox Code Playgroud)
Nei*_*l N 20
我认为你正在使用Skip错误.它应该在Take之前.
跳过多个记录,因此对于第一页,传入0,否则传递(页码 - 1)*每页*记录.
我通常做这样的事情:
int Page = 1;
int RecordsPerPage = 10;
var q = yourQuery.Skip((Page - 1) * RecordsPerPage).Take(RecordsPerPage);
Run Code Online (Sandbox Code Playgroud)
您需要先在GridView上打开分页.然后在PageIndexChanging事件上:
var result = db.Where(...)
.Skip(e.NewPageIndex * grid.PageSize)
.Take(grid.PageSize)
.ToList(); // this is very important part too
Run Code Online (Sandbox Code Playgroud)
要模仿IN行为:
var selection = list.SelectedItems.Select(i => i.Text).ToArray();
var result = db.Where(x => selection.Contains(x.Prop));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36314 次 |
| 最近记录: |