欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C# 实现Table的Merge,Copy和Clone

程序员文章站 2022-03-22 15:41:28
c#实现的对两个table进行merge,两表必须存在至少一个公共栏位作为连接项,否则连接就失去了意义。如下是对两个table进行merge的详细代码:private void button1_cli...

c#实现的对两个table进行merge,两表必须存在至少一个公共栏位作为连接项,否则连接就失去了意义。如下是对两个table进行merge的详细代码:

private void button1_click(object sender, eventargs e)//button点击触发事件
    {
      #region table的merge
      datatable dt = new datatable();

      datatable dt1 = new datatable();//创建table1
      dt1.columns.add("id", typeof(string));
      dt1.columns.add("name",typeof(string));
      dt1.columns.add("age", typeof(int));
      dt1.columns.add("sex", typeof(string));

      dt1.primarykey = new datacolumn[] { dt1.columns["id"]};
      for (int i = 0; i < 5; i++)
      {
        datarow dr = dt1.newrow();
        dr["id"] = "00" + i.tostring();
        dr["name"] = "00-" + i.tostring();
        dr["age"] = 15 + i;
        dr["sex"] = "m";
        dt1.rows.add(dr);

      }
      dt = dt1;

      datatable dt2 = new datatable();//创建table2
      dt2.columns.add("id", typeof(string));
      dt2.columns.add("name", typeof(string));
      dt2.columns.add("course",typeof(string));
      dt2.columns.add("score",typeof(int));

      dt2.primarykey = new datacolumn[] { dt2.columns["id"] };
      for (int i = 0; i < 5; i++)
      {
        datarow dr = dt2.newrow();
        dr["id"] = "00" + i.tostring();
        dr["name"] = "00-" + i.tostring();
        dr["course"] ="c#";
        dr["score"] = i + 80;
        dt2.rows.add(dr);
      }
      dt = dt2;
      dt1.merge(dt2);

      //copy
      var table1 = dt1.copy();//copy,复制表的结构以及数据
      //添加新的一行
      datarow dr1 = table1.newrow();
      dr1["id"] = "005";
      dr1["name"] = "00-5";
      dr1["age"] = 15;
      dr1["sex"] = "f";
      table1.rows.insertat(dr1,2);//表的指定位置插入新增加的一行   
       
      table1.columns.add(new datacolumn() { columnname = "memo", datatype = typeof(string) });//默認插入到最後一列
      table1.columns["memo"].setordinal(0);//把插入的列移动到第一行

      int memoindex = table1.columns.indexof("memo");//获取列的位置信息
      var iscontainname = table1.columns.contains("name");//判断table中是否存在某列

      list<string> columnsnamelist = new list<string>();//遍历获取table的所有列名
      foreach (datacolumn col in table1.columns)
      {
        columnsnamelist.add(col.columnname);
      }

      table1.columns.removeat(memoindex);//通过列名的索引进行移除
      table1.columns.removeat(2);//通过列名的索引进行移除

      table1.columns.remove("sex");//通过列名进行移除,建议使后者
      

      string[] name = new string[table1.rows.count];//方法一:对表中的数据进行遍历输出
      string[] id = new string[table1.rows.count];
      for (int i = 0; i < table1.rows.count; i++)
      {
        name[i] = table1.rows[i]["name"].tostring();
        id[i] = table1.rows[i]["id"].tostring();
      }
           
      table1.clear();//清空表中的数据

      //clone
      var table2 = dt2.clone();//clone,复制表的结构、约束信息

      #endregion

    }

以上就是c# 实现table的merge,copy和clone的详细内容,更多关于c# table merge的资料请关注其它相关文章!