是否有可能使LINQ的OrderBy操作保持IQueryable的原始顺序?

时间:2014-07-06 17:28:08

标签: c# linq entities

尝试根据IQueryable寻找搜索结果集时,我收到错误消息,指出我必须在使用OrderBy之前致电Skip

在大多数情况下,这很好,因为我可以通过Id订购结果。但是,我有一个边缘情况,我通过我的实体类调用函数导入。此函数导入在SQL中使用FREETEXT搜索并返回排名结果集。

我需要维护 - 并且能够翻阅 - 结果集,但是如果我针对结果集中的任何列调用OrderBy,我将不再拥有一组排名搜索结果。

所以,听起来很傻,有没有办法让愚弄 LINQ认为我已经调用了OrderBy只维持原始顺序的操作?

1 个答案:

答案 0 :(得分:1)

您可以使用:

var page = searchResultSet.OrderBy(x => 0).Skip(40).Take(20);

这将维持结果集的原始顺序,因为所有记录都具有相同的常量值0,因此排序它们在比较它们的相等值后不会改变它们的顺序。

Check this answer