none
能不能用dataset进行数据的横向合并? RRS feed

  • 问题

  • 问题如下:

    有2个以上检索出来的数据表

    格式如下大致如下:

    表tab1字段:CA,A1,A2,A3

    表tab2字段:CA,B1,B2,B3,B4

    两个表中的字段CA都是主键,CA的数据都是一样的。

    想要得到的表结构:CA,A1,A2,A3,B1,B2,B3,B4

    能不能用Dataset把他们合并,然后在gridview中输出?

    2010年4月22日 3:43

答案

  •   DataTable   dt1   =   ...;  
      DataTable   dt2   =   ...;  
      DataSet   ds   =   new   DataSet();  
      ds.Tables.Add(dt1);  
      ds.Merge(dt2);  
      DataTable   dt   =   ds.Tables[0];


    努力+方法=成功
    2010年4月22日 3:48
  • dt1.Merge(dt2, false, MissingSchemaAction.AddWithKey);
    知识改变命运,奋斗成就人生!
    2010年4月22日 9:24
    版主

全部回复

  •   DataTable   dt1   =   ...;  
      DataTable   dt2   =   ...;  
      DataSet   ds   =   new   DataSet();  
      ds.Tables.Add(dt1);  
      ds.Merge(dt2);  
      DataTable   dt   =   ds.Tables[0];


    努力+方法=成功
    2010年4月22日 3:48
  • Merge是纵向合并表吧?
    2010年4月22日 5:49
  • dt1.Merge(dt2, false, MissingSchemaAction.AddWithKey);
    知识改变命运,奋斗成就人生!
    2010年4月22日 9:24
    版主
  • 你好,

    可能最好的方式是直接在数据库里面查询出你要的显示结构。

    如果能这样,尽量在数据库里做吧。

    另外如果不行,最笨的办法就是修改某个table的column然后再把相应的数据填充。

    我也觉得Merge是纵向合并,不是横向的。能否请肖小勇版主确认下。谢谢。

     

    Microsoft Online Community Support
    2010年4月23日 3:49
  • KeFang Chen 版主 

    你好!

    Merge 横向、纵向都是支持的。横向一般很少用到,但很有用,比如网上常说的动态列的问题,除了使用 SQL 实现外利用Merge 横向合并也是可以的。示例如下:

    class Program
    {
      static void Main(string[] args)
      {
        DataTable dt1 = new DataTable();
        dt1.Columns.Add("Id", typeof(int));
        dt1.Columns.Add("Name", typeof(string));
    
        DataTable dt2 = new DataTable();
        dt2.Columns.Add("Id", typeof(int));
        dt2.Columns.Add("Birthday", typeof(DateTime));
        dt2.Columns.Add("Address", typeof(string));
    
        dt1.PrimaryKey = new DataColumn[] { dt1.Columns["Id"] };
        dt2.PrimaryKey = new DataColumn[] { dt2.Columns["Id"] };
    
        dt1.Rows.Add(new object[] { 1, "Name1"});
        dt1.Rows.Add(new object[] { 2, "Name2" });
    
        dt2.Rows.Add(new object[] { 1, DateTime.Now, "address 1" });
        dt2.Rows.Add(new object[] { 2, DateTime.Now, "address 2" });
    
        dt1.Merge(dt2, false, MissingSchemaAction.AddWithKey);
      }
    }


    知识改变命运,奋斗成就人生!
    2010年4月23日 5:07
    版主
  • 多谢肖小勇版主!

    的确可以。


    Microsoft Online Community Support
    2010年4月23日 6:18