1
Is .Skip()。Take()是在Entity Framework中進行分頁的唯一方法嗎?有什麼方法可以在輸出中選擇行號,所以我可以使用Where(p => p.row > 9 && p.row <21)
?實體框架4:將Microsoft SQL 2005/2008 row_number轉換爲字段的C#代碼?
select top 100 ROW_NUMBER() over (order by ID) as row, *
from myTable
我會認爲ROW_NUMBER()字段必須在生成的SQL存在的是要知道哪些內容可以跳過行,並採取。
當然,我可以通過創建單獨的SQL視圖與該字段,或者我可以指定確切的SQL到EF,但我真的想要使用Linq表達式。
因此,我認爲如果人們沒有從存儲庫返回IQueryable,那麼人們會用skip和take參數重載他們的存儲庫函數。使用row_number設置視圖的問題將預先確定排序順序。因此,排序順序也需要在存儲庫中處理。我想這並不算太壞,因爲Orderby需要一個Lambda。您可以考慮所有這些嚴格的要求,即可以簡單地下載和使用存儲庫。現在我要去找那個下載了。 :) 感謝您的回答。 – 2010-10-24 14:35:25
是的,我認爲使用'Skip'和'Take'是標準的。 – Gabe 2010-10-24 15:51:57
這也意味着將您的SQL查詢延遲到您的存儲庫之外是標準的,這也意味着如果您訪問.Count然後單獨訪問這些元素,則可以運行相同的查詢兩次。 – 2010-10-24 23:41:50