我有三个带数据的DataTable:
table1 has columns AGE, FIRST_NAME, LAST_NAME, FAVORITE_COLOR, PHONE
table2 has columns AGE, FIRST_NAME, LAST_NAME, PHONE
table3 has columns AGE, LAST_NAME, FIRST_NAME, FAVORITE_COLOR, PHONE
我还有第四张表,我需要填写前三张表中的所有数据。
table4 has columns AGE, LAST_NAME, FIRST_NAME, PHONE
任何想法如何做到这一点?
答案 0 :(得分:1)
听起来你正在以错误的方式解决问题;线索是您复制数据并寻求将表合并在一起的方式。
这种事情通常可以在数据访问层(DAL)实现,即具有更好的数据库查询。
也许如果你为你想要实现的问题提供更多的上下文,我们将能够分析并看看我们是否能够提出更好的解决方案。很抱歉,如果这听起来很光顾,那就不是了 - 正如您所知,有无限的方法可以解决软件中的问题!
希望有所帮助!
答案 1 :(得分:1)
尝试.ImportRow:
var dtA = new DataTable
{
Columns =
{
{ "Age", typeof(int) },
{ "Middlename", typeof(string) },
{ "Firstname", typeof(string) }
}
};
dtA.Rows.Add(1, "Yeah", "John");
dtA.Rows.Add(2, "Yo", "Paul");
var dtB = new DataTable
{
Columns =
{
{ "Age", typeof(int) },
{ "Firstname", typeof(string) }
}
};
dtB.Rows.Add(3, "George");
dtB.Rows.Add(4, "Ringo");
foreach (DataRow r in dtA.Rows)
dtB.ImportRow(r);
foreach (DataRow r in dtB.Rows)
{
MessageBox.Show(string.Format("{0} {1}", r["Age"], r["Firstname"]));
}
答案 2 :(得分:0)
DataSet dataset; //dataset with all datatables (table1, table2, table3)
DataTable table4; //datatable with the result "union"
foreach (DataTable dt in dataset.Tables)
{
foreach (DataRow dr in dt.Rows)
{
DataRow nr = table4.NewRow();
foreach (DataColumn dc in table4.Columns)
{
try
{
nr[dc.ColumnName] = dr[dc.ColumnName];
}
catch
{
nr[dc.ColumnName] = "COLUMN NOT FOUND";
}
}
table4.Rows.Add(nr);
}
}
答案 3 :(得分:0)
DataTable有一个名为“Merge”的方法,所以:
table4.Merge(table1, true, MissingSchemaAction.Ignore) // ignores any columns that are not in table4's schema
table4.Merge(table2, true, MissingSchemaAction.Ignore)
table4.Merge(table3, true, MissingSchemaAction.Ignore)
假设您先给了table4您想要的列,当然,使用
table4.Columns.Add