我們需要檢索一個排序的項目列表。排序順序與任意項目的指導列表相關。即它可能是1,2,3,4以及3,7,2,4。在SQL語句中排序之前LINQ總是首選嗎?
我們不使用LINQ到SQL或存儲過程。
我建議我們按照SQL Server提供的順序讀取列表,並在C#代碼中使用LINQ對其進行排序。
另一種方法是創建一個像這樣的字符串(以下this tip)。
select * from publishers
Order by (CASE City
WHEN 'Paris' THEN 1
WHEN 'Chicago' THEN 2
WHEN 'Boston' THEN 3
WHEN 'New York' THEN 4
ELSE 100 END) ASC, City DESC
我必須承認,有一定的整潔這種方法,但我真的喜歡C#中的數據操作的發揮。我不能想出另一種方法,但我不得不承認這是一個行之有效的方法。
這裏有什麼缺點? (除了明顯的注入,當然,這對我們來說不是問題,我們不必擔心安全問題,幸運的是)。
它很大程度上取決於一個問題:你是在分頁數據還是在全部讀取?如果你是*分頁*,除了在服務器上排序外,你別無選擇。如果你正在抓取所有的東西,那麼坦白地說,你在什麼地方排序它並不重要 - 在應用程序層進行排序的確可能更具可擴展性(你通常擁有比數據庫服務器更多的應用程序服務器) – 2013-02-11 08:43:20
@MarcGravell一旦。 – 2013-02-11 08:44:31