如何将我的某个Datatable的内容传输到新的Datatable?我正在过滤掉我的数据表的内容,因为当我检查某些复选框时,过滤将起作用。所以我所做的就是这样做:
//dt & dt2 are Datatables, dt has all of the data and dt2 is a blank Datatable
string fieldcheck= "2"
for (var f = 0; f < dt.Rows.Count; f++ )
{
if (dt.Rows[f]["nameID"].ToString() == fieldcheck)
{
dt2.Rows.Add(dt.Rows[f]);
}
}
但是错误是该行已经属于另一个表。如何将特定行传输到空数据表?
答案 0 :(得分:4)
您无法将DataRow
添加到属于另一个DataTable
的{{1}}。请注意,每一行都通过Table
property引用它的表。
您必须通过复制所有字段手动添加它们或使用DataTable.ImportRow
:
DataTable
您的要求的另一种方法是使用dt2.ImportRow(dt.Rows[f]);
来简化您的代码:
Linq-To-DataTable
请注意,如果没有匹配的行,var matchingRows = dt.AsEnumerable()
.Where(r => r.Field<string>("Name") == fieldcheck)
DataTable dt2 = matchingRows.Any() ? matchingRows.CopyToDataTable() : dt.Clone();
会抛出异常。这就是为什么我使用条件运算符和CopyToDataTable
作为回退值,它创建了一个具有相同模式的空表。