【发布时间】:2010-09-09 15:52:15
【问题描述】:
我有一个 DataSet,我从中得到一个 DataTable,我是从函数调用传回的。它有 15-20 列,但我只想要 10 列数据。
有没有办法删除那些我不想要的列,将 DataTable 复制到另一个只定义了我想要的列,或者迭代集合并只使用我需要的列更好。
我需要将值写入一个固定长度的数据文件。
【问题讨论】:
-
我无法控制收到的数据集。我唯一知道的是它包含了一切。
我有一个 DataSet,我从中得到一个 DataTable,我是从函数调用传回的。它有 15-20 列,但我只想要 10 列数据。
有没有办法删除那些我不想要的列,将 DataTable 复制到另一个只定义了我想要的列,或者迭代集合并只使用我需要的列更好。
我需要将值写入一个固定长度的数据文件。
【问题讨论】:
除了限制选择的列以减少带宽和内存:
DataTable t;
t.Columns.Remove("columnName");
t.Columns.RemoveAt(columnIndex);
【讨论】:
DataTable 已经有现有行的情况,而不仅仅是空的DataTable。
要删除所需列之后的所有列,下面的代码应该可以工作。它将在索引 10 处删除(请记住,列是从 0 开始的),直到列数为 10 或更少。
DataTable dt;
int desiredSize = 10;
while (dt.Columns.Count > desiredSize)
{
dt.Columns.RemoveAt(desiredSize);
}
【讨论】:
该问题已被标记为已回答,但我猜该问题表明此人想要从 DataTable 中删除多个列。
因此,当我遇到同样的问题时,这就是我所做的。
string[] ColumnsToBeDeleted = { "col1", "col2", "col3", "col4" };
foreach (string ColName in ColumnsToBeDeleted)
{
if (dt.Columns.Contains(ColName))
dt.Columns.Remove(ColName);
}
【讨论】:
你可以像这样选择你想要的列:
Dim Subjects As String = "Math, English"
Dim SubjectData As DataTable = Table.AsDataView.ToTable(True, Subjects.Split(","))
【讨论】: