【发布时间】:2021-09-10 06:21:43
【问题描述】:
我正在尝试遍历一个集合,即,但它应该只根据分页值进行迭代。
看,我有这个:
var SkipCount= 0;
var TakeCount= 50;
var list= db.tblCollection.where(r => r.Id > 1).orderby(r=> r.Id).Take(Take).Skip(SkipCount);
var totalTableRecords= list.count(); // 200 records in my case
var counter= 0;
现在外部循环将一直运行,直到达到 totalTableRecords-1 的总值。 对于外循环的每次迭代的内循环,它应该只检查指定数量的记录。
for( ;counter < totalTableRecords; )
{
foreach(var l in list)
{
//Do some coding here
counter= counter + 1;
}
SkipCount= TakeCount;
TakeCount= TakeCount+ 50;
}
我想要实现的是,在外循环的第 1 次运行中,内循环应根据修剪后的即1st 50 记录执行一些操作。然后,在第二次运行中,我们确实需要跳过第一次运行中已经执行的50 记录,并且应该是下一个50 记录。然后在第三个循环中,它将忽略1st和2nd中已经读取的100记录,运行(50+50)和下一个50记录,直到外循环的计数器达到条件。
我试过这个,但它一直运行到极限,即200,而实际完成的工作只有4迭代。
我该如何解决这个问题?
【问题讨论】:
-
如果要处理所有记录,则不需要记录总数,只需在每次外部迭代中获取 50 条下一条记录,直到没有更多记录可获取。 BR
标签: c# entity-framework linq linq-to-sql linq-to-entities