2012-02-20 80 views
0
string[] words = { "aaaa", "a-aaa", "bbbb", "b-bbbb", "000"}; 
    var sortedWords = 
      from w in words 
      orderby w 
      select w; 

當我運行這個查詢時,預期的順序是000,a-aaa,aaaa,b-bbbb和bbbb。什麼是正確的字符串排序順序?

但實際結果是000,aaaa,a-aaa,bbbb和b-bbbb。

我用SQL服務器驗證了它與LINQ結果相同。我的理解錯了還是錯誤?

在此先感謝。

+1

「我的理解是錯誤還是錯誤?」 - 幾乎肯定是前者:-) – paxdiablo 2012-02-20 01:56:00

回答

1

查看相關問題的this answer。當您使用默認文化特定比較器對字符串進行排序時,連字符是一種特殊情況。

+0

謝謝。該解決方案不適合所有情況。例如,如果您正在編寫SharePoint CAML查詢,則應用此解決方案效果不佳。 – Yass 2012-02-22 04:04:59

+0

@Yass:你也試圖在CAML中寫一個查詢嗎?什麼是問題? – 2012-02-22 08:05:58

+0

是的,正如我前面提到的,我嘗試在SQL服務器以及CAML查詢中,都返回相同的值。如果我們必須實現文化特定的排序,我感覺它很複雜。 – Yass 2012-02-23 22:39:59

相關問題