DataTable的Merge、Copy和Clone

 1         private void button1_Click(object sender, EventArgs e)
 2         {
 3             DataTable dt1 = new DataTable();
 4             dt1.Columns.Add("ID", typeof(string));
 5             dt1.Columns.Add("NAME", typeof(string));
 6             dt1.Columns.Add("AGE", typeof(int));
 7             dt1.Columns.Add("SEX", typeof(string));
 8 
 9             dt1.PrimaryKey = new DataColumn[] { dt1.Columns["ID"] };
10             for (int i = 0; i < 5; i++)
11             {
12                 DataRow dr = dt1.NewRow();
13                 dr["ID"] = "00" + i.ToString();
14                 dr["NAME"] = "00-" + i.ToString();
15                 dr["AGE"] = 15 + i;
16                 dr["SEX"] = "M";
17                 dt1.Rows.Add(dr);
18 
19             }
20             DataTable dt2 = new DataTable();
21             dt2.Columns.Add("ID", typeof(string));
22             dt2.Columns.Add("NAME", typeof(string));
23             dt2.Columns.Add("Course", typeof(string));
24             dt2.Columns.Add("Score", typeof(int));
25 
26             dt2.PrimaryKey = new DataColumn[] { dt2.Columns["ID"] };
27             for (int i = 0; i < 5; i++)
28             {
29                 DataRow dr = dt2.NewRow();
30                 dr["ID"] = "00" + i.ToString();
31                 dr["NAME"] = "00-" + i.ToString();
32                 dr["Course"] = "C#";
33                 dr["Score"] = i + 80;
34                 dt2.Rows.Add(dr);
35             }
36             //Merge
37             dt1.Merge(dt2);
38             //Copy
39             var dt3 = dt1.Copy();//Copy,复制表的结构以及数据
40             //Clone
41             var dt4 = dt2.Clone();//Clone,复制表的结构、约束信息
42 
43             //对DataTable的操作
44             DataRow dr1 = dt3.NewRow();
45             dr1["ID"] = "005";
46             dr1["NAME"] = "00-5";
47             dr1["AGE"] = 15;
48             dr1["SEX"] = "F";
49             dt3.Rows.InsertAt(dr1, 2);//表的指定位置插入新增加的一行     
50 
51             dt3.Columns.Add(new DataColumn() { ColumnName = "Memo", DataType = typeof(string) });//默认插入到最后一列
52             dt3.Columns["Memo"].SetOrdinal(0);//把插入的列移动到第一行
53 
54             int memoIndex = dt3.Columns.IndexOf("Memo");//获取列的位置信息
55             var isContainName = dt3.Columns.Contains("NAME");//判断table中是否存在某列
56 
57             List<string> columnsNameList = new List<string>();//遍历获取table的所有列名
58             foreach (DataColumn col in dt3.Columns)
59             {
60                 columnsNameList.Add(col.ColumnName);
61             }
62 
63             dt3.Columns.RemoveAt(memoIndex);//通过列名的索引进行移除
64             dt3.Columns.RemoveAt(2);//通过列名的索引进行移除
65             dt3.Columns.Remove("SEX");//通过列名进行移除,建议使后者
66 
67             string[] name = new string[dt3.Rows.Count];//方法一:对表中的数据进行遍历输出
68             string[] id = new string[dt3.Rows.Count];
69             for (int i = 0; i < dt3.Rows.Count; i++)
70             {
71                 name[i] = dt3.Rows[i]["NAME"].ToString();
72                 id[i] = dt3.Rows[i]["ID"].ToString();
73             }
74 
75             dt3.Clear();//清空表中的数据
76         }
原文地址:https://www.cnblogs.com/lgx5/p/12227978.html