私の同僚がチェックインいくつかのコードを見ていた私は、それはこのように見えた:Dictionary
は、ハッシュテーブルであるので、私はすぐに非、彼のコードが間違っていると私の同僚に語った.Net辞書がソートされているように見えるのはなぜですか?
return list.OrderBy(item => item.Order).ToDictionary(item => item.Id);
ソートされたコレクション。彼は、注文保存コレクションを使用するか、あとでアイテムを並べ替えて、foreach
という辞書から読み込んでください。
しかし、彼は答えました。「いいえ、いいえ、私のコードは正しいです。見てください:OrderBy
を追加したので、項目は正しい順序で表示されます。
テストケースでは、彼が正しいと分かりました。他のデータを試しましたが、まだ完全にソートされています!
私は、この行動に頼るべきではないと言いましたが、彼は同意しません。理由を説明するのが難しいです。それに、私はなぜ注文がしばしば保存されているように見えるのかに興味があります。
私の質問は... Dictionary
は基本的にソートされていないコレクションで、ソートされているようですね。
辞書<>コレクションは順不同であるという保証を提供していません。目的に応じてランダムを使用しません。はい、コードが間違っています。 –
はいジャスティン、これは複製です。あなたがリンクしている質問の答えは、私が望むものです。辞書に関する多くの質問の中で、重複をすばやく見つける方法はありますか?私は検索し、それを見つけることができませんでした。ありがとうございました! –
私はこれをコメントとして投稿している理由はわかりませんが、SQLと同じであると思います。 'SELECT'によって返された行は、' ORDER BY'節が含まれていない限り、不特定の順序で返されます。多くの場合、特に小さなデータセットでは、挿入されたのと同じ順序で行が返され、多くの人が移動します。 (私はいつも、結果の順序について気にするならば、「ORDER BY」を含めるように人々に言います。それがなければ働くかもしれませんが、ひどく壊れるかもしれません)。 –