如何在Linq中使用Long类型跳过

Pav*_*cka 4 c# linq

如何在Linq中使用Skip的long类型(Int64).它仅支持Int32.

dataContext.Persons.Skip(LongNumber);
Run Code Online (Sandbox Code Playgroud)

Tho*_*oub 6

你可以使用while循环:

// Some init
List<Person> persons = new List<Person>();
List<Person> resultList = persons;
long bigNumber = 3 * (long)int.MaxValue + 12;

while (bigNumber > int.MaxValue)
{
    resultList = resultList.Skip(int.MaxValue).ToList();
    bigNumber -= int.MaxValue;
}
resultList = resultList.Skip(int.MaxValue).ToList();
// Then what do what you want with this result list
Run Code Online (Sandbox Code Playgroud)

但是你的收藏品不仅仅包括int.MaxValue参赛作品吗?

  • 实际上,我修改了这个评论,并说这是一个非常糟糕的方法用于实体框架,因为它使用的是"ToList()",这可能是数十亿条记录到内存中 - 请不要这样做! (4认同)
  • 对于普通列表,这是一个很好的解决方法,但遗憾的是,许多Linq提供程序将无法使用此方法.例如,实体框架不起作用,因为它将跳过计数的内部跟踪保持为"int". (3认同)