积极答复者
wpf DATATABLE OBSERVABLE 区别

问题
答案
-
DataTable是通过DataView来提供数据源的,因而也有类似的双向更新的作用。对于你的需求,需要动态列显示,ObservableCollection 就很难满足了,因为他始终是个一维的集合,他的成员Item的属性只有支持动态增减 (.Net 4的Dymanic特性)才可以满足你的列动态,而DataTable则是一个二维数据结构,他支持行列的动态的。
不过DataTable比较古老,他仅实现了一些接口,所以现在来说,他不够灵活地应用到多种技术中,比如他不能够成为一个广义的数据结构来做ORM,现在只有通过一些已经实现并支持DataTable的组件才能使用它。所以我们推荐的还是ObservableCollection。但是应不同需求而定,比如你的,就是用DataTable比较合适。
性能上不会差很多,相反ObservableCollection可能会相对与DataTable有点性能损失。
Sincerely,
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
- 已标记为答案 Jie BaoModerator 2011年7月14日 10:35
-
你好!
功能上:DataTable 本身就已实现了丰富的功能,如双向绑定、排序、过滤、统计等。而 ObservableCollection 只是一个集合对象,要实现上述功能还依赖于集合中的对象实现相关的接口,然后再结合 Linq 才能实现,这也是你觉得 DataTable 方便的原因。DataTable 正好是弱类型的,而你的需求强类型对象很难实现。
性能上:在传输上 DataTable 序列化后会比一般的实体对象要大一些,因为它需要维护自身的数据结构与数据状态。
在我们的产品中两种方式都有用到,用哪种方式还得看具体场景不能一概而论。
知识改变命运,奋斗成就人生!- 已标记为答案 Jie BaoModerator 2011年7月14日 10:35
全部回复
-
DataTable是通过DataView来提供数据源的,因而也有类似的双向更新的作用。对于你的需求,需要动态列显示,ObservableCollection 就很难满足了,因为他始终是个一维的集合,他的成员Item的属性只有支持动态增减 (.Net 4的Dymanic特性)才可以满足你的列动态,而DataTable则是一个二维数据结构,他支持行列的动态的。
不过DataTable比较古老,他仅实现了一些接口,所以现在来说,他不够灵活地应用到多种技术中,比如他不能够成为一个广义的数据结构来做ORM,现在只有通过一些已经实现并支持DataTable的组件才能使用它。所以我们推荐的还是ObservableCollection。但是应不同需求而定,比如你的,就是用DataTable比较合适。
性能上不会差很多,相反ObservableCollection可能会相对与DataTable有点性能损失。
Sincerely,
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
- 已标记为答案 Jie BaoModerator 2011年7月14日 10:35
-
你好!
功能上:DataTable 本身就已实现了丰富的功能,如双向绑定、排序、过滤、统计等。而 ObservableCollection 只是一个集合对象,要实现上述功能还依赖于集合中的对象实现相关的接口,然后再结合 Linq 才能实现,这也是你觉得 DataTable 方便的原因。DataTable 正好是弱类型的,而你的需求强类型对象很难实现。
性能上:在传输上 DataTable 序列化后会比一般的实体对象要大一些,因为它需要维护自身的数据结构与数据状态。
在我们的产品中两种方式都有用到,用哪种方式还得看具体场景不能一概而论。
知识改变命运,奋斗成就人生!- 已标记为答案 Jie BaoModerator 2011年7月14日 10:35