2008-11-09 101 views
4

尽管DataTable是一个内存管理器,但如果由于检索时间为O(1)而导致对象集合非常大,DataTable不会是实现和IdentityMap的最佳选择吗?实施身份地图的最佳结构是什么?

更新

如果我决定使用IDictionary的,我检索对象时,我牺牲速度?

回答

5

任何Dictionary<,>SortedList<,>SortedDictionary<,>将是明显的选择 - 但请注意THA排序成为这里的一个问题... Dictionary<,>不保证任何特定的顺序;另外两个按键而不是按键排序。

请注意,字典不会与数据绑定非常好地播放。可能最好创建类似Collection<T>的东西,但是封装了 a Dictionary<,>以进行查找。当然,这一切都取决于场景。

关于SortedList<,>等之间性能差异的更多信息可以参考here

1

我会更倾向于使用一个由字典< T,T >支持的自定义类比DataTable。据推测,这将建立在数据访问层之上,可以使用LINQ或DataTable等访问关系数据,但如果对象在自定义映射中可用,则至少要避免必须从关系数据中重新构建它数据。

相关问题