从两个数据表创建一个数据表
本文关键字:数据表 一个 创建 两个 | 更新日期: 2023-09-27 18:01:58
我有两个具有相同模式、业务伙伴和地址的数据表。我想把它们组合成一个特定的格式,以便导入到另一个系统。
基本上,我希望输出如下所示:- 商业伙伴
- 所有关联地址
- 下一个业务合作伙伴
- 所有关联地址
这是我正在尝试的最新代码:
var finalDt = BpDt.Clone();
foreach(DataRow BpRow in BpDt.Rows)
{
finalDt.ImportRow(BpRow);
foreach(DataRow AddressRow in AddressDt.Rows)
{
if(Convert.ToString(BpRow["id"]).Equals(Convert.ToString(BpRow["id"])))
finalDt.ImportRow(AddressRow);
}
}
它似乎陷入了一个无限循环,但我不明白为什么。有更好的方法来解决这个问题吗?
你的方法太糟糕了。但是,如果你坚持这样做,这应该是可行的:
var finalDt = BpDt.Clone();
foreach(DataRow BpRow in BpDt.Rows)
{
finalDt.ImportRow(BpRow);
foreach(DataRow AddressRow in AddressDt.Rows)
{
if(Convert.ToString(BpRow["id"]).Equals(Convert.ToString(AddressRow["id"])))
finalDt.ImportRow(AddressRow);
}
}
看起来…
if(Convert.ToString(BpRow["id"]).Equals(Convert.ToString(BpRow["id"])))
总是true
。所以你只需要为每个BpRow
插入每个AddressRow
。根据您的数据集大小,这可能需要很长时间。id
的比较应该是这样吗?
if(Convert.ToString(AddressRow["id"]).Equals(Convert.ToString(BpRow["id"])))
从概念上讲,这类似于id
字段上的连接。
DataTable
的AsEnumerable()
扩展,您可以使用LINQ查询AddressDt
…
数据表的LINQ查询