儘管DataTable是一個內存管理器,但如果由於檢索時間爲O(1)而導致對象集合非常大,DataTable不會是實現和IdentityMap的最佳選擇嗎?實施身份地圖的最佳結構是什麼?
更新
如果我決定使用IDictionary的,我檢索對象時,我犧牲速度?
儘管DataTable是一個內存管理器,但如果由於檢索時間爲O(1)而導致對象集合非常大,DataTable不會是實現和IdentityMap的最佳選擇嗎?實施身份地圖的最佳結構是什麼?
更新
如果我決定使用IDictionary的,我檢索對象時,我犧牲速度?
任何Dictionary<,>
,SortedList<,>
或SortedDictionary<,>
將是明顯的選擇 - 但請注意THA排序成爲這裏的一個問題... Dictionary<,>
不保證任何特定的順序;另外兩個按鍵而不是按鍵排序。
請注意,字典不會與數據綁定非常好地播放。可能最好創建類似Collection<T>
的東西,但是封裝了 a Dictionary<,>
以進行查找。當然,這一切都取決於場景。
關於SortedList<,>
等之間性能差異的更多信息可以參考here。
我會更傾向於使用一個由字典< T,T >支持的自定義類比DataTable。據推測,這將建立在數據訪問層之上,可以使用LINQ或DataTable等訪問關係數據,但如果對象在自定義映射中可用,則至少要避免必須從關係數據中重新構建它數據。