考虑一个DataTable
,其中的一个子集将被复制到一个新的DataTable
中。子集是一定数量的行,直到某个索引。目前,它是用以下代码完成的:
DataTable toDisplay = new DataTable();
// dataSource is the original DataTable
foreach (DataColumn col in dataSource.Columns)
toDisplay.Columns.Add(new DataColumn(col.ColumnName, col.GetType()));
for (int i = 0; i < maxIndex; i++)
{
var index = i;
var currentRow = dataSoure.Rows[index];
object[] currentRowItems = currentRow.ItemArray; // this is the problematic line
toDisplay.Rows.Add(currentRowItems);
}
这种方法的问题在于,结果表中的行没有原始表中的特定类型。如何做到这一点?
您可以使用Clone
:
克隆DataTable的结构,包括所有DataTable架构和约束。
因此,您可以简单地执行以下操作:
DataTable toDisplay = dataSource.Clone();
for (int i = 0; i < maxIndex; i++)
{
var index = i;
var currentRow = dataSource.Rows[index];
toDisplay.ImportRow(currentRow);
}