• 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
    
            }
  • 相关阅读:
    Mix 10 上的asp.net mvc 2的相关Session
    Vista、XP SP2主流支持即将终止
    向Visual Studio 2010迁移的电子书
    ASP.NET MVC 2 转换工具
    Javascript瘦身工具AJAX Minifier
    微软公司的安全开发周期模型
    User Experience Kit
    乐在其中设计模式(C#) 迭代器模式(Iterator Pattern)
    [翻译]使用ASP.NET AJAX让GridView的数据行显示提示框(ToolTip)
    [翻译]使用ASP.NET AJAX实现幻灯片效果
  • 原文地址:https://www.cnblogs.com/wml-it/p/12204838.html
Copyright © 2020-2023  润新知