2012-02-20 29 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

答えて

1

関連する質問はthis answerをご覧ください。ハイフンは、デフォルトのカルチャ固有の比較機能を使用して文字列をソートする特殊なケースです。

+0

ありがとうございました。このソリューションは、すべてのシナリオに適していません。たとえば、SharePoint CAMLクエリを作成している場合、このソリューションを適用するとうまくいきません。 – Yass

+0

@Yass:CAMLにクエリを書き込もうとしていますか?質問は何ですか? –

+0

はい、先ほど触れたように、私はSQLサーバーとCAMLクエリーの両方で同じ値を返します。カルチャ固有のソートを実装する必要がある場合は、その複雑さを感じます。 – Yass

関連する問題