Bud*_*Joe 4 .net linq paging ado.net entity-framework
通过ADO.NET EF和LINQ提供什么样的分页支持?
"前10"选择外观是什么样的?
一个"下一个10"选择?
Den*_*ler 11
正如其他人在这里解释的那样,Take()和Skip()就是你所需要的.
他们会砍掉结果集,以获得您想要的页面.
您必须以某种方式维护PageIndex和PageSize信息,以便在运行查询时传递它们.例如,如果您通过Web服务完成数据访问,则可以在过滤条件的同时传递索引/大小,在客户端(应用程序或页面,如果它是网站)中维护这些值.
开箱即用没有"有状态的分页迭代器",如果你正在寻找的话......
此外,如果您正在实现"标准分页"构造,则需要在限制查询之前获取记录总数,您可以这样做,假设您的函数以某种方式将PageSize和PageIndex作为参数:
var query = ...your normal query here...
int totalRecordCount = query.Count();
var pagedQuery = query.Skip(PageIndex*PageSize).Take(PageSize);
Run Code Online (Sandbox Code Playgroud)
Take关键字用于决定要提取的记录数.下面提供了Take关键字的一个简单示例.
List customers = GetCustomerList();
Run Code Online (Sandbox Code Playgroud)var first3Customers = ( from c in customers select new {c.CustomerID, c.CustomerName} ) .Take(4);在这里,我们将前4位客户列为所提供的列表.
我们也可以使用where子句来缩小列表的范围,然后再使用其中的4个.
Run Code Online (Sandbox Code Playgroud)var first3Customers = ( from c in customers where c.Region == "Kol" select new {c.CustomerID, c.CustomerName} ) .Take(4);但是如果我们想要获得第4和第8条记录之间的数据呢?在这种情况下,我们使用skip关键字跳过我们不想要的记录数(从顶部).以下是使用Skip关键字的示例.
Run Code Online (Sandbox Code Playgroud)var first3Customers = ( from c in customers where c.Region == "Kol" select new {c.CustomerID, c.CustomerName} ) .Skip(3).Take(4);
更多在这里
| 归档时间: |
|
| 查看次数: |
2470 次 |
| 最近记录: |