2014-07-06 32 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

這工作完美!謝謝! –

相關問題