
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 }

【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤