添加两个具有唯一列的数据表

时间:2014-03-04 09:58:39

标签: c# .net

我有两个数据表 dt1有Id countryID dt2有Url和Id

我想添加这两个数据表 如果我使用

foreach (DataColumn col in dt.Columns)
{
    dt1.Columns.Add(col.ColumnName, col.DataType);
}

获取列Url之类的错误已经属于另一个数据表 请帮我如何添加这两个表

2 个答案:

答案 0 :(得分:1)

您需要复制ColumnName等属性并创建新的DataColumns

您收到此错误是因为DataTable在其列中保留了reference,并且每列都保留了reference到它的DataTable。

答案 1 :(得分:0)

如果您的目标是创建包含三列(DataTableIdCountryId)的单个Url,则只需在每个{{1}上创建一个主键}列,只需调用Id

示例:

dt1.Merge(dt2)

var dt1 = new DataTable(); var id1 = dt1.Columns.Add("Id"); dt1.Columns.Add("CountryId"); dt1.PrimaryKey = new []{id1}; dt1.Rows.Add(new []{"1", "Austria"}); dt1.Rows.Add(new []{"2", "Iceland"}); var dt2 = new DataTable(); var id2 = dt2.Columns.Add("Id"); dt2.Columns.Add("Url"); dt2.PrimaryKey = new []{id2}; dt2.Rows.Add(new []{"1", "www.austria.at"}); dt2.Rows.Add(new []{"2", "www.iceland.is"}); dt1.Merge(dt2); 现在看起来像:

enter image description here