Enumerable.OrderByを使用して並べ替えたい UTF-8 文字列のリストがあります。文字列には、英語、ドイツ語、日本語、またはそれらの組み合わせなど、任意の数の文字セットを含めることができます。
たとえば、入力リストの例を次に示します。
["東京","North 東京", "München", "New York", "Chicago", "大阪市"]
StringComparer.CurrentCultureを使用することが に渡す正しい文字列比較パラメーターであるかどうかについて混乱していますOrderBy()
。アプリケーションの現在の文化が、ルールを並べ替えるen-US
だけでなく、UTF-8 データを "正しく" 並べ替えたい場合はどうなりますか?en-US
私の混乱は、おそらく、.NET の文字列比較および並べ替えのセマンティクスと完全に一致しない OracleのNLSSORT関数を理解していることに起因しています。たとえば、NLS_SORT=Japanese_M を設定すると、並べ替え可能な列の特定の文字列に一部またはすべての文字が含まれているかどうかに関係なく、ラテン語、西ヨーロッパ言語、および日本語が正しく並べ替えられます。