使用LINQ分页和存储过程分页的要点是什么?

时间:2018-08-18 06:16:23

标签: c# sql-server linq stored-procedures pagination

我对LINQ分页和存储过程分页有疑问:

  1. 如果我使用LINQ分页,那么使用Microsoft的逻辑是什么?意味着它会将所有数据加载到列表中,然后执行分页逻辑?

    例如,如果我在SQL Server数据库中有1百万条记录,并且想使用LINQ分页,那么它将如何工作?

    代码段:

    _list = _list.Skip(StartIndex).Take(FetchRecords).ToList();
    
  2. 如果LINQ首先加载所有记录,那么我是否必须进行存储过程分页?

1 个答案:

答案 0 :(得分:0)

您需要记住

ToList (IEnumerable)方法强制立即进行查询评估,并返回包含查询结果的列表。

https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.tolist

即没有调用ToList方法,查询不会执行,因此没有数据。

第二,您还应该使用OrderBy方法,例如。 OrderBy(o => o.ID);,因为您应该明确知道跳过和取出项目的顺序。

进一步考虑使用“ where”和“ select”方法来限制数据有效载荷。