现在有两个DataTable。分别是
dtb1:
ID  Class
1   A
2   B
3   C
dtb2:
ID  Value
1   a
2   b
4   d
如何用C#得到新的表
dtb:
ID  Class  Value
1   A      a
2   B      b
就是sql语句的id关联等值连接查询。但是是把DataTable提出来用C#写
谢谢路过大虾赐教。

解决方案 »

  1.   

    使用ADO.NET 中的表达式
    http://www.microsoft.com/china/MSDN/library/data/dataAccess/ADONETEXP.mspx
      

  2.   

    //创建dtb1
    DataTable dtb1 = new DataTable();
    dtb1.Columns.Add("ID");
    dtb1.Columns.Add("Class");
    DataRow dr1 = dtb1.NewRow();
    dr1["ID"] = 1;
    dr1["Class"] = "A";
    dtb1.Rows.Add(dr1);
    dr1 = dtb1.NewRow();
    dr1["ID"] = 2;
    dr1["Class"] = "B";
    dtb1.Rows.Add(dr1);
    dr1 = dtb1.NewRow();
    dr1["ID"] = 3;
    dr1["Class"] = "C";
    dtb1.Rows.Add(dr1);//创建dtb2
    DataTable dtb2 = new DataTable();
    dtb2.Columns.Add("ID");
    dtb2.Columns.Add("Value");
    DataRow dr2 = dtb2.NewRow();
    dr2["ID"] = 1;
    dr2["Value"] = "a";
    dtb2.Rows.Add(dr2);
    dr2 = dtb2.NewRow();
    dr2["ID"] = 2;
    dr2["Value"] = "b";
    dtb2.Rows.Add(dr2);
    dr2 = dtb2.NewRow();
    dr2["ID"] = 4;
    dr2["Value"] = "d";
    dtb2.Rows.Add(dr2);//生成新的表
    DataTable dtb = new DataTable();
    dtb.Columns.Add("ID");
    dtb.Columns.Add("Class");
    dtb.Columns.Add("Value");
    DataRow dr;
    foreach(DataRow dr3 in dtb1.Rows)
    {
    int ID = Convert.ToInt32(dr3["ID"]);
    foreach(DataRow dr4 in dtb2.Rows)
    {
    if(Convert.ToInt32(dr4["ID"]) == ID)
    {
    dr = dtb.NewRow();
    dr["ID"] = ID;
    dr["Class"] = dr3["Class"];
    dr["Value"] = dr4["Value"];
    dtb.Rows.Add(dr);
    }
    }
    }//绑定到DataGrid
    this.dataGrid1.DataSource = dtb;