DataTable dt1 = new DataTable();
            DataColumn dc1 = new DataColumn("NO");
            DataColumn dc2 = new DataColumn("Name");            dt1.Columns.Add(dc1);
            dt1.Columns.Add(dc2);            dt1.PrimaryKey = new DataColumn[]{dc1};            dt1.Rows.Add(new object[] { 1, "A" });
            dt1.Rows.Add(new object[] { 2, "B" });            DataTable dt2 = new DataTable();
            DataColumn dc21 = new DataColumn("NO");
            DataColumn dc211 = new DataColumn("NO1");
            DataColumn dc22 = new DataColumn("shuxue");            dt2.Columns.Add(dc21);
            dt2.Columns.Add(dc211);
            dt2.Columns.Add(dc22);
            
            dt2.PrimaryKey = new DataColumn[] { dc21, dc211 };            dt2.Rows.Add(new object[] { 1,1, 11 });
            dt2.Rows.Add(new object[] { 1, 2, 11 });
            dt2.Rows.Add(new object[] { 2,1, 22 });象这种第二个表是第一个表的从表的合并有什么简单的方法?用循环太慢了。

解决方案 »

  1.   

    不要用DataTable,写两个实体类不就行了
      

  2.   

    两次查询(不能一定查) 第一次查基本信息表 第二次查货物表
    基本信息表主键 NO
    货物表主键 NO  +  SEQNO
    是一对多的关系
    查出两个datatable如果能合成一个
    因为基本信息表数据条数少 所以合成时要补充数据
    Merge方法报错 空引用用循环需要四层
      

  3.   

    例如基本信息表
    数据
    no  name
    1    A
    2    B货物表
    no seqno shuxue
    1    1     11
    1    2     12
    2    1     22合成后的表为
    no name seqno shuxue
    1   A     1     11
    1   A     2     12
    2   B     1     22
      

  4.   

    这个东西在SQL中去组合不行吗??
    程序控制的话 你的字段不确定如何来控制
      

  5.   


    void Main()
    {
    DataTable dt1 = new DataTable();
    DataColumn dc1 = new DataColumn("NO");
    DataColumn dc2 = new DataColumn("Name"); dt1.Columns.Add(dc1);
    dt1.Columns.Add(dc2); dt1.PrimaryKey = new DataColumn[]{dc1}; dt1.Rows.Add(new object[] { 1, "A" });
    dt1.Rows.Add(new object[] { 2, "B" }); DataTable dt2 = new DataTable();
    DataColumn dc21 = new DataColumn("NO");
    DataColumn dc211 = new DataColumn("seqno");
    DataColumn dc22 = new DataColumn("shuxue"); dt2.Columns.Add(dc21);
    dt2.Columns.Add(dc211);
    dt2.Columns.Add(dc22);

    dt2.PrimaryKey = new DataColumn[] { dc21, dc211 }; dt2.Rows.Add(new object[] { 1,1, 11 });
    dt2.Rows.Add(new object[] { 1, 2, 11 });
    dt2.Rows.Add(new object[] { 2,1, 22 });

    var  query=from t1 in dt1.AsEnumerable()
               join t2 in dt2.AsEnumerable()
       on t1.Field<string>("NO") equals t2.Field<string>("NO")
       select new 
    {
      NO=t1.Field<string>("NO"),
      Name=t1.Field<string>("Name"),
      seqno=t2.Field<string>("seqno"),
      shuxue=t2.Field<string>("shuxue")
    };
    DataTable dt3 = new DataTable();
    DataColumn c1 = new DataColumn("NO");
    DataColumn c2 = new DataColumn("Name");
    DataColumn c3 = new DataColumn("seqno");
    DataColumn c4 = new DataColumn("shuxue");
    dt3.Columns.AddRange(new DataColumn[]{c1,c2,c3,c4});
       
       query.ToList().ForEach(q=>dt3.Rows.Add(q.NO,q.Name,q.seqno,q.shuxue));
     
    }
      

  6.   

    要是在SQL中能组合我还用的着用datatable吗
    用户自定查询 还带函数 SQL是拼出来的
    查询字段 查询条件
    全是自定义
    字段虽然不确定但查询的时候可以强加上主键 这样就可以合并了
      

  7.   

    我怎么看他像是个 select no name seqno shuxue from  A right join  B on no=no