このコードフラグメントを考えてみましょう:私のシステムでなぜ "1.0" <"-1.0" <"1.1"ですか?
var sorted = new[] { "-1.0", "0.0", "1.0", "1.1", "2.0" }
.OrderBy (s => s)
.ToArray();
Console.WriteLine (string.Join (", ", sorted));
をこれは-
のASCIIコードは、私が-1.0, 0.0, 1.0, 1.1, 2.0
を予想数字ASCIIコードよりも小さいであることを考えると
0.0, 1.0, -1.0, 1.1, 2.0
を印刷します。
-1.0
が1.0
と1.1
間である理由それは間違いなく私を混乱させる。それらの2つは同じ文字で始まるので、それらの間のものは1
で始まる必要があります。
文化やロケールの設定がこれに影響すると漠然と思われますが、ドイツ語と英語が混在していますが、上記の場合は英語やインバリアントと違いはありません。 MSDNドキュメントString.Compareあたりとして
comparerメソッドを直接呼び出すと(つまり、 'string'のデフォルトの比較文字列)、自分で答えを見つけることができます。あなたはこれを何とか調べようとしましたか?これまで何をしていますか?あなたの質問は私にかなり怠惰だと思われます。実際に掘り下げて何が起こっているのかを見るためには、疑いはありません。 –
[OrderBy'のドキュメント(https://msdn.microsoft.com/en-us/library/bb534966(v=vs.110).aspx)が役に立ちますか? –
これはすべてドキュメントに説明されています。順序を行うためにどのメソッドが呼び出されているか( 'CompareTo')を見て、記述した注釈を見てください。確かにそれはSOを求めるよりもむしろアクションの最初のコースでなければならない。 –