2014-07-06 15 views
0

当试图页的搜索结果集基于一个IQueryable我得到一个错误,说明我必须使用Skip之前调用OrderBy是否有可能使LINQ的OrderBy操作保持IQueryable的原始顺序?

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

我需要保持 - 并能够通过对网页 - 该结果集,但如果我叫OrderBy反对任何在我的结果集列,我将不再拥有一套排名搜索结果。

所以,它听起来傻傻的,是有办法傻瓜 LINQ到思想,我有一个名为OrderBy操作,只是维持原来的顺序?

+0

如果你正在做的铁杆SQL,那么你可以处理SQL分页使用胶印获取或TOP和ROW_NUMBER –

+0

谢谢,但我需要专注于在C#中解决问题。 –

+1

它翻译成sql'Row_Number()OVER(Order by?)',看起来好像没有'.OrderBy(...)'也是不可能的。 – Silvermind

回答

1

您可以使用此:

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

这将保持你的结果集的原有秩序,因为所有记录都将有0相同的恒定值,因此排序比较后他们不会改变它们的顺序他们的价值相等。

Check this answer

+1

这工作完美!谢谢! –

相关问题