是否有可能使LINQ的OrderBy操作保持IQueryable的原始顺序?
问题描述:
当试图页的搜索结果集基于一个IQueryable
我得到一个错误,说明我必须使用Skip
之前调用OrderBy
。是否有可能使LINQ的OrderBy操作保持IQueryable的原始顺序?
在大多数情况下,这是好的,因为我可以只订单来自序号的结果。然而,我有一个边缘情况,我在通过我的实体类调用函数导入。此函数导入在SQL中使用FREETEXT
搜索并返回一个排名结果集。
我需要保持 - 并能够通过对网页 - 该结果集,但如果我叫OrderBy
反对任何在我的结果集列,我将不再拥有一套排名搜索结果。
所以,它听起来傻傻的,是有办法傻瓜 LINQ到思想,我有一个名为OrderBy
操作,只是维持原来的顺序?
答
您可以使用此:
var page = searchResultSet.OrderBy(x => 0).Skip(40).Take(20);
这将保持你的结果集的原有秩序,因为所有记录都将有0相同的恒定值,因此排序比较后他们不会改变它们的顺序他们的价值相等。
+1
这工作完美!谢谢! –
如果你正在做的铁杆SQL,那么你可以处理SQL分页使用胶印获取或TOP和ROW_NUMBER –
谢谢,但我需要专注于在C#中解决问题。 –
它翻译成sql'Row_Number()OVER(Order by?)',看起来好像没有'.OrderBy(...)'也是不可能的。 – Silvermind