寻呼支持 - ADO.NET Entitry Framework和LINQ

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)


The*_*TXI 8

Take关键字用于决定要提取的记录数.下面提供了Take关键字的一个简单示例.

List customers = GetCustomerList();

var first3Customers = (
            from c in customers

            select new {c.CustomerID, c.CustomerName} )
            .Take(4);
Run Code Online (Sandbox Code Playgroud)

在这里,我们将前4位客户列为所提供的列表.

我们也可以使用where子句来缩小列表的范围,然后再使用其中的4个.

var first3Customers = (
            from c in customers
           where c.Region == "Kol"

            select new {c.CustomerID, c.CustomerName} )
            .Take(4);
Run Code Online (Sandbox Code Playgroud)

但是如果我们想要获得第4和第8条记录之间的数据呢?在这种情况下,我们使用skip关键字跳过我们不想要的记录数(从顶部).以下是使用Skip关键字的示例.

var first3Customers = (
            from c in customers
           where c.Region == "Kol"

            select new {c.CustomerID, c.CustomerName} )
            .Skip(3).Take(4);
Run Code Online (Sandbox Code Playgroud)

更多在这里