DataTable はメモリを大量に消費しますが、取得時間が O(1) であるため、オブジェクトのセットが非常に大きい場合、実装するのに DataTable と IdentityMap が最適ではないでしょうか?
アップデート
IDictionary を使用することにした場合、オブジェクトを取得するときに速度を犠牲にしますか?
DataTable はメモリを大量に消費しますが、取得時間が O(1) であるため、オブジェクトのセットが非常に大きい場合、実装するのに DataTable と IdentityMap が最適ではないでしょうか?
アップデート
IDictionary を使用することにした場合、オブジェクトを取得するときに速度を犠牲にしますか?
いずれかDictionary<,>
、SortedList<,>
またはSortedDictionary<,>
当然の選択ですが、ここでは並べ替えが問題になることに注意してください...Dictionary<,>
特定の順序を保証するものではありません。他の2つの順序は、挿入順序ではなく、キーによる順序です。
また、辞書はデータバインディングではうまく機能しないことにも注意してください。のようなものを作成することが望ましい場合がありますCollection<T>
が、ルックアップ用にをカプセル化します。Dictionary<,>
もちろん、それはすべてシナリオに依存します。
SortedList<,>
etc間のパフォーマンスなどの違いの詳細については、こちらをご覧ください。
DataTable よりも、Dictionary<T,T> に基づくカスタム クラスを使用する傾向があります。おそらく、これは、LINQ や DataTables などを使用してリレーショナル データにアクセスできるデータ アクセス レイヤーの上に構築されますが、オブジェクトがカスタム マップで使用できる場合は、少なくともリレーショナル データから再構成する必要がなくなります。データ。