从数据表中选择到数据表

时间:2010-07-09 12:02:41

标签: c# .net datatable

我有三个带数据的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

任何想法如何做到这一点?

4 个答案:

答案 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