【问题标题】:Retrieve records by page size按页面大小检索记录
【发布时间】:2013-02-05 14:55:58
【问题描述】:

如果我使用普通查询,我有一个大表,它有一个超时异常。所以我想选择前1000个然后输出,下一步是从1001到2000检索并记录它等等。

我不确定如何在查询中添加参数。

int pageNumer = 0;
var query = DBContext.MyTable.Where(c=>c.FacilityID == facilityID)
 .OrderBy(c=>c.FilePath)
 .Skip(pageNumer*1000)
 .Take(1000);

foreach(var x in query)
{
     // Console.WriteLine(x.Name);
}
   // I want pageNumber is incremented until it goes to the bottom of the table.
   // I don't know how many records in the table.

【问题讨论】:

  • 您在这里所做的事情有什么不妥?您是否只是在为整个表寻找第二个计数变量,以便添加分页?
  • 基本上我不确定我可以添加 for(int i=o;i
  • 我不明白为什么不这样做 - 但在不了解您的业务需求的情况下,这很难评论。

标签: linq sql-server-2008 entity-framework c#-4.0


【解决方案1】:

试试这个:

int pageNumber = 0;
bool hasHitEnd = false;

while (!hasHitEnd)
{
   var query = DBContext.MyTable.Where(c=>c.FacilityID == facilityID)
    .OrderBy(c=>c.FilePath)
    .Skip(pageNumber*1000)
    .Take(1000);

   foreach(var x in query)
   {
        // Do something
   }

   if (query.Count < 1000)
   {
      hasHitEnd = true;
   }

   pageNumber++;
}

【讨论】:

    猜你喜欢
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 2011-03-22
    相关资源
    最近更新 更多