我有两个数据表 dt1有Id countryID dt2有Url和Id
我想添加这两个数据表 如果我使用
foreach (DataColumn col in dt.Columns)
{
dt1.Columns.Add(col.ColumnName, col.DataType);
}
获取列Url之类的错误已经属于另一个数据表 请帮我如何添加这两个表
答案 0 :(得分:1)
您需要复制ColumnName
等属性并创建新的DataColumns
您收到此错误是因为DataTable
在其列中保留了reference,并且每列都保留了reference到它的DataTable。
答案 1 :(得分:0)
如果您的目标是创建包含三列(DataTable
,Id
和CountryId
)的单个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);
现在看起来像: