尽管 DataTable 是一个内存占用者,但如果由于检索时间为 O(1) 而对象集非常大,那么 DataTable 不是实现和 IdentityMap 的最佳选择吗?
更新
如果我决定使用 IDictionary,我会在检索对象时牺牲速度吗?
尽管 DataTable 是一个内存占用者,但如果由于检索时间为 O(1) 而对象集非常大,那么 DataTable 不是实现和 IdentityMap 的最佳选择吗?
更新
如果我决定使用 IDictionary,我会在检索对象时牺牲速度吗?
任何Dictionary<,>
,SortedList<,>
或SortedDictionary<,>
都是显而易见的选择 - 但请注意,排序在这里成为一个问题......Dictionary<,>
不保证任何特定的顺序;另外两个按键顺序而不是插入顺序。
另请注意,字典不会很好地与数据绑定一起使用。最好创建类似 a 的东西Collection<T>
,但封装aDictionary<,>
用于查找。当然,这一切都取决于场景。
SortedList<,>
可以在此处找到有关 etc 之间的性能等差异的更多信息。
我更倾向于使用由 Dictionary<T,T> 支持的自定义类而不是 DataTable。据推测,这将构建在可以使用 LINQ 或 DataTables 等来访问关系数据的数据访问层之上,但如果该对象在自定义映射中可用,您至少可以避免从关系中重构它数据。