我对LINQ分页和存储过程分页有疑问:
如果我使用LINQ分页,那么使用Microsoft的逻辑是什么?意味着它会将所有数据加载到列表中,然后执行分页逻辑?
例如,如果我在SQL Server数据库中有1百万条记录,并且想使用LINQ分页,那么它将如何工作?
代码段:
_list = _list.Skip(StartIndex).Take(FetchRecords).ToList();
如果LINQ首先加载所有记录,那么我是否必须进行存储过程分页?
答案 0 :(得分:0)
您需要记住
ToList (IEnumerable)方法强制立即进行查询评估,并返回包含查询结果的列表。
https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.tolist
即没有调用ToList方法,查询不会执行,因此没有数据。
第二,您还应该使用OrderBy方法,例如。 OrderBy(o => o.ID);
,因为您应该明确知道跳过和取出项目的顺序。
进一步考虑使用“ where”和“ select”方法来限制数据有效载荷。