将 DataRow 复制到新的 DataTable 中,使用原始 DataTable 中的适当类型

Copying DataRow into new DataTable, with appropriate types from original DataTable

考虑一个 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);
}

此方法的问题是生成的 table 中的行没有原始 table 中的特定类型。如何实现?

您可以使用 Clone:

Clones the structure of the DataTable, including all DataTable schemas and constraints.

因此您可以简单地按如下方式进行:

DataTable toDisplay = dataSource.Clone();

for (int i = 0; i < maxIndex; i++)
{
    var index = i;
    var currentRow = dataSource.Rows[index];
    
    toDisplay.ImportRow(currentRow);
}