【发布时间】:2014-04-26 12:02:01
【问题描述】:
我有一个包含 100 多列的数据表,但我需要删除所有列 除了前 11 列。 我需要保留第 11 列的数据。 我正在使用以下代码进行操作
public DataTable validdatatable(DataTable table)
{
DataTable dt = new DataTable();
for (int i = 0; i < 11; i++)
{
DataColumn dc = new DataColumn();
dc.ColumnName = table.Columns[i].ColumnName;
dc.DataType = table.Columns[i].DataType;
dt.Columns.Add(dc);
}
for (int i = 0; i < table.Rows.Count; i++)
{
object[] ob = table.Rows[i].ItemArray;
...
...
}
return dt;
}
此方法有效,但对 CPU 和 Ram 负担过重。
我还有其他方法可以继续吗?
【问题讨论】:
-
"但是 CPU 和内存太重了。" ?我没有意识到还有 286 还剩.... :)
-
内存不足异常被抛出。我不能增加内存。我知道为什么会出现异常,因为在第二个 for 循环中创建的对象没有被释放。服务器是 XP,只有 1 GB 内存,总是满的。
-
请注意,DataTable 一次将其所有数据保存在内存中。如果您接受 DataTable 并生成 DataTable 结果,那么简单的解决方案通常需要两个表的内存使用。结果是用来做什么的?输入来自哪里?这些是可以通知更改方法签名的关键信息,从而为解决方案留出更多喘息空间。