• C#实现的Table的Merge,以及实现Table的Copy和Clone


    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
    
            }
  • 相关阅读:
    Topshelf的使用
    ref和out的区别
    .NET编码解码(HtmlEncode与HtmlDecode)
    查询表中某字段有重复记录个数的方法
    ActiveReports 报表应用教程 (8)---交互式报表之动态过滤
    ActiveReports 报表应用教程 (7)---交叉报表及数据透视图实现方案
    ActiveReports 报表应用教程 (6)---分组报表
    ActiveReports 报表应用教程 (5)---解密电子商务领域首张电子发票的诞生(套打报表)
    ActiveReports 报表应用教程 (4)---分栏报表
    ActiveReports 9 新功能:借助目录(TOC)控件为报表添加目录功能
  • 原文地址:https://www.cnblogs.com/wml-it/p/12204838.html
Copyright © 2020-2023  润新知