2009-04-21 34 views

回答

8

Take关键字用于决定如何获取多个记录。 A关键字的一个简单示例 提供如下。

List customers = GetCustomerList();

var first3Customers = (
      from c in customers 

      select new {c.CustomerID, c.CustomerName}) 
      .Take(4); 

这里我们以第一个4 客户为例提供。

我们还可以使用where子句中的 先缩小列表,然后 取其中4个。

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

      select new {c.CustomerID, c.CustomerName}) 
      .Take(4); 

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

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

      select new {c.CustomerID, c.CustomerName}) 
      .Skip(3).Take(4); 

更多Here

11

正如其他人在这里解释,以()和Skip()是你所需要的。

他们会砍掉结果集,让你得到你想要的页面。

您必须以某种方式维护PageIndex和PageSize信息,以便您可以在运行查询时传递它们。 如果您的数据访问是通过Web服务完成的,您可以在与您的过滤标准同时传递索引/大小,在客户端(应用程序或页面(如果它是网站))中维护这些值。

没有“寻呼状态迭代器”开箱即用的,如果这是你在找什么...

此外,如果要实现一个“标准的翻页”建设,则需要限制你的查询,你可以做这样的,假设你的功能得到每页和的PageIndex作为参数莫名其妙之前获得的总记录数:

var query = ...your normal query here... 
int totalRecordCount = query.Count(); 
var pagedQuery = query.Skip(PageIndex*PageSize).Take(PageSize); 
0

如果您的NuGet在Visual Studio中可用,您可以添加PagedList包。

看一看this link at asp.net