C# 如何从数据行获取列?
我有一个行集合(DataRow[]行)。我想将所有行导入另一个DataTable(DataTable dt) 但是怎么做呢 代码C# 如何从数据行获取列?,c#,datatable,datarowcollection,C#,Datatable,Datarowcollection,我有一个行集合(DataRow[]行)。我想将所有行导入另一个DataTable(DataTable dt) 但是怎么做呢 代码 DataTable dt; 如果(drs.Length>0) { dt=新数据表(); foreach(drs中的数据行) { dt.Columns.Add(第行) } //如果可能的话,可以这样=>dt.Columns.AddRange(???) 对于(int i=0;i
DataTable dt;
如果(drs.Length>0)
{
dt=新数据表();
foreach(drs中的数据行)
{
dt.Columns.Add(第行)
}
//如果可能的话,可以这样=>dt.Columns.AddRange(???)
对于(int i=0;i
假设所有行都具有相同的结构,最简单的方法是克隆旧表,忽略数据:
DataTable dt = drs[0].Table.Clone();
或者,类似于:
foreach(DataColumn col in drs[0].Table.Columns)
{
dt.Columns.Add(col.ColumnName, col.DataType, col.Expression);
}
怎么样
DataTable dt = new DataTable;
foreach(DataRow dr in drs)
{
dt.ImportRow(dr);
}
注意:这仅在drs
是数据行集合时有效。分离的行(不在DataRowCollection
中)被忽略
不要忘记调用AcceptChanges。如果数据行来自定义了列的数据表
DataRow[] rows;
DataTable table = new DataTable();
var columns = rows[0].Table.Columns;
table.Columns.AddRange(columns.Cast<DataColumn>().ToArray());
foreach (var row in rows)
{
table.Rows.Add(row.ItemArray);
}
DataRow[]行;
DataTable=新的DataTable();
var columns=行[0]。Table.columns;
table.Columns.AddRange(Columns.Cast().ToArray());
foreach(行中的变量行)
{
table.Rows.Add(row.ItemArray);
}
谢谢你,马克。您很完美。如果您使用的是.NET 3.5,是否可以使用DataTableExtensions.CopyToDataTable方法(DataRowCollection/IEnumerable的扩展)?我已经做了快速检查,但没有添加任何列。。。因此,您得到的行没有任何值-不是特别有用。ReDataRowCollection
-这没有任何区别。我的测试示例正在使用DataTable.Rows(DataRowCollection)中的一个附加行,但它根本不起作用。对不起,好的,我是凭记忆回答的,不是一个测试用例(很难从我的测试环境中来回找到,不要问)。我收回我的答案。这也很好。我喜欢AddRange而不是foreach。
DataRow[] rows;
DataTable table = new DataTable();
var columns = rows[0].Table.Columns;
table.Columns.AddRange(columns.Cast<DataColumn>().ToArray());
foreach (var row in rows)
{
table.Rows.Add(row.ItemArray);
}