dt1 字段 a ,b,c,d,e     dt2字段 m,n,p如果d=m and e=n 那么p就作为dt1的一个字段p 组后要的dt3就是  a,b,c,d,e,p

解决方案 »

  1.   

    for循环加if判断不难啊就是写两个datatable麻烦
      

  2.   

    这个可以  不知道浅拷贝行不  你试下clone();
      

  3.   

    这个可以  不知道浅拷贝行不  你试下clone();
      

  4.   

    有一个叫DataRelation的, 楼主试试.附代码示例:
    #region Using directivesusing System;
    using System.Data;            // Use ADO.NET namespace
    using System.Data.SqlClient;  // Use SQL Server data provider namespace
    using System.Collections.Generic;
    using System.Text;#endregionnamespace ManyRelations
    {
    class Program
    {
    static void Main(string[] args)
    {
    // Specify SQL Server-specific connection string SqlConnection thisConnection = new SqlConnection(@"Data Source=HUI\SQLSERVER;Initial Catalog=Northwind;Integrated Security=True"); DataSet thisDataSet = new DataSet();
    SqlDataAdapter custAdapter = new SqlDataAdapter("SELECT * FROM Customers", thisConnection);
    custAdapter.Fill(thisDataSet, "Customers"); SqlDataAdapter orderAdapter = new SqlDataAdapter("SELECT * FROM Orders", thisConnection);
    orderAdapter.Fill(thisDataSet, "Orders"); SqlDataAdapter detailAdapter = new SqlDataAdapter("SELECT * FROM [Order Details]", thisConnection);
    detailAdapter.Fill(thisDataSet, "Order Details"); SqlDataAdapter prodAdapter = new SqlDataAdapter("SELECT * FROM Products", thisConnection);
    prodAdapter.Fill(thisDataSet, "Products");            //创建DataRelation对象
    DataRelation custOrderRel = thisDataSet.Relations.Add("CustOrders",
    thisDataSet.Tables["Customers"].Columns["CustomerID"],
    thisDataSet.Tables["Orders"].Columns["CustomerID"]); DataRelation orderDetailRel = thisDataSet.Relations.Add("OrderDetail",
    thisDataSet.Tables["Orders"].Columns["OrderID"],
    thisDataSet.Tables["Order Details"].Columns["OrderID"]); DataRelation orderProductRel = thisDataSet.Relations.Add(
      "OrderProducts", thisDataSet.Tables["Products"].Columns["ProductID"],
                   thisDataSet.Tables["Order Details"].Columns["ProductID"]);               //此处Products是父表 foreach (DataRow custRow in thisDataSet.Tables["Customers"].Rows)
    {
    Console.WriteLine("Customer ID: " + custRow["CustomerID"]); foreach (DataRow orderRow in custRow.GetChildRows(custOrderRel))        //提取子行
    {
    Console.WriteLine("\tOrder ID: " + orderRow["OrderID"]);
    Console.WriteLine("\tOrder Date: " + orderRow["OrderDate"]); foreach (DataRow detailRow in
     orderRow.GetChildRows(orderDetailRel))
    {
    Console.WriteLine("\t\tProduct: " +
    detailRow.GetParentRow(orderProductRel)["ProductName"]);        //从"多端"进入"一端",获取父对象
    Console.WriteLine("\t\tQuantity: " + detailRow["Quantity"]);
    }
    }
    }
    thisConnection.Close();
    Console.Write("Program finished, press Enter/Return to continue:");
    Console.ReadLine();
    }
    }
    }
      

  5.   

    这里我是按着你的需求,自己定义了一些数据            DataTable dt1, dt2, dt3;
                dt1 = new DataTable();
                dt2 = new DataTable();
                dt1.Columns.Add(new DataColumn("a"));
                dt1.Columns.Add(new DataColumn("b"));
                dt1.Columns.Add(new DataColumn("c"));
                dt1.Columns.Add(new DataColumn("d"));
                dt1.Columns.Add(new DataColumn("e"));
                dt2.Columns.Add(new DataColumn("m"));
                dt2.Columns.Add(new DataColumn("n"));
                dt2.Columns.Add(new DataColumn("p"));            dt3 = dt1.Clone();
                dt3.Columns.Add(new DataColumn("p"));            for (int i = 0; i < 10; i++)
                {
                    DataRow row = dt1.NewRow();
                    foreach (DataColumn col in dt1.Columns)
                    {
                        row[col] = i.ToString();
                    }
                    dt1.Rows.Add(row);
                }            for (int i = 5; i < 10; i++)
                {
                    DataRow row = dt2.NewRow();
                    foreach (DataColumn col in dt2.Columns)
                    {
                        row[col] = i;
                    }
                    dt2.Rows.Add(row);
                }
                foreach (DataRow row in dt1.Rows)
                {
                    DataRow[] t = dt2.Select("m='" +row["d"]+"' and n='" + row["e"]+"'");//找到相同的行
                    foreach (DataRow r in t)
                    {
                        DataRow r3 = dt3.NewRow();
                        r3["a"] = row["a"];
                        r3["b"] = row["b"];
                        r3["c"] = row["c"];
                        r3["d"] = row["d"];
                        r3["e"] = row["e"];
                        r3["p"]=r["p"];
                        dt3.Rows.Add(r3);                }            }            foreach (DataRow r in dt3.Rows)
                {
                    foreach (DataColumn c in dt3.Columns)
                    {
                        Console.Write(r[c]);
                        Console.Write("...");
                    }
                    Console.WriteLine();
                }
      

  6.   

    datatable.merge
    d,e两列设置为主键列