将特定数据从1个数据表传输到另一个错误

时间:2014-07-02 07:42:55

标签: c# asp.net datatable row

如何将我的某个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]);
    }
}

但是错误是该行已经属于另一个表。如何将特定行传输到空数据表?

1 个答案:

答案 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作为回退值,它创建了一个具有相同模式的空表。