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