Aje*_*sad 1 c# linq-to-entities entity-framework
我试图在跳过 x 组的同时获取 n 组的所有行,因此我不必一次执行所有记录。通过这种方式,我可以实现分页以更快地加载数据。
下面的代码工作正常(没有跳过),我从前 2 个组中获取所有记录(按相同的 Id 分组)。
IOrderedQueryable<Patient> query = query.OrderBy(r => r.Id);
IQueryable<Patient> groupedQuery = query.GroupBy(x => x.Id).Take(2).SelectMany(g => g);
Run Code Online (Sandbox Code Playgroud)
但是要实现分页,当我尝试按以下方式添加“跳过”并调用groupedQuery.ToList();
.
IQueryable<Patient> groupedQuery = query.GroupBy(x => x.Id).Skip(2).Take(4).SelectMany(g => g);
Run Code Online (Sandbox Code Playgroud)
它抛出异常:
方法“跳过”仅支持 LINQ to Entities 中的排序输入。方法 'OrderBy' 必须在方法 'Skip' 之前调用。
有人可以建议正确的做法。
小智 6
如果组的顺序对您来说无关紧要,请尝试OrderBy()
在Skip
如下之前添加一个方法:
query.GroupBy(x => x.Id).OrderBy(YourOrderCriterion).Skip(2).Take(4).SelectMany(g => g);
Run Code Online (Sandbox Code Playgroud)
错误的原因是因为Skip
通常用于分页,如果您不保证您的数据按某种方式排序,那么用于检索第一页的顺序可能与用于后续页面的顺序不同。
归档时间: |
|
查看次数: |
375 次 |
最近记录: |