是否有可能使LINQ'的order操作保持iquerable的原始顺序?

本文关键字:iquerable 原始 顺序 操作 order LINQ 是否 有可能 | 更新日期: 2023-09-27 18:11:43

当尝试基于IQueryable页面搜索结果集时,我得到一个错误,说明我必须在使用Skip之前调用OrderBy

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

我需要维护——并且能够通过——这个结果集,但是如果我对结果集中的任何列调用OrderBy,我将不再拥有一组排序的搜索结果。 所以,听起来很傻,有没有一种方法可以让愚弄 LINQ,让它认为我调用了一个OrderBy操作,而这个操作只是维持了原来的顺序?

是否有可能使LINQ'的order操作保持iquerable的原始顺序?

你可以这样做:

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

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

检查这个答案