【发布时间】:2013-07-30 07:41:27
【问题描述】:
我已经尝试过这种方式从数据表中读取数据,还有其他更好的方法可以将数据存储在列表中(以减少内存使用)。
代码:
foreach (System.Data.DataRow row in table.Rows)
{
Myclassdef data = new Myclassdef();
data.Data = new Dictionary<string, object>();
foreach (DataColumn columninfo in table.Columns)
{
object value = row[columninfo.ColumnName];
Myclassdef.Data.Add(columninfo.ColumnName, value);
}
}
【问题讨论】:
-
你确定你的内存问题是由
DataTable引起的吗?您正在将所有内容映射到一个自定义类,其中每一行都有一个字典。所以你需要的内存是单独使用DataTable的两倍多。为什么不使用DataReader从数据库中读取这些值?无需在内存中存储任何内容即可流式传输数据。 -
@TimSchmelter 如何避免将内存翻倍
-
@Smith:如果数据源是数据库,请使用下面我的
DataReader方法。那么Myclassdef实例及其字典是唯一的内存消费者。 -
@TimSchmelter : 如果多个用户同时访问数据库,是否会发生任何错误或任何问题
标签: c# wpf memory-management datatable