添加"跳过"引发异常:方法"跳过"仅支持用于 LINQ to 实体中的排序输入



>我正在尝试获取 n 个组的所有行,同时跳过 x 个组,这样我就不必一次执行所有记录。通过这种方式,我可以实现分页以更快地加载数据。

以下代码工作正常(无需跳过(,我正在从前 2 组(按相同 ID 分组(获取所有记录。

IOrderedQueryable<Patient> query = query.OrderBy(r => r.Id);
IQueryable<Patient> groupedQuery = query.GroupBy(x => x.Id).Take(2).SelectMany(g => g);

但是要实现分页,当我尝试通过以下方式添加"跳过"并调用groupedQuery.ToList();.

IQueryable<Patient> groupedQuery = query.GroupBy(x => x.Id).Skip(2).Take(4).SelectMany(g => g);

它抛出异常:

方法"跳过"仅支持在 LINQ to 中的排序输入 实体。方法"OrderBy"必须在方法之前调用 "跳过"。

有人可以建议正确的方法吗?

如果组的顺序对您无关紧要,请尝试在Skip之前添加OrderBy()方法,如下所示:

query.GroupBy(x => x.Id).OrderBy(YourOrderCriterion).Skip(2).Take(4).SelectMany(g => g);

此错误的原因是,由于Skip通常用于分页,如果您不保证数据按特定方式排序,则用于检索第一页的顺序可能与用于后续页面的顺序不同。

最新更新