C# DataTbale详细操作
1、创建DataTable对象
DataTable dt = new DataTable("Table_AX");
2、为DataTable创建列
//方式一(我觉得这种好) dt.Columns.Add("column0", System.Type.GetType("System.String")); //方式二 DataColumn dc = new DataColumn("column0", typeof(string)); DataColumn dc = new DataColumn("column1", System.Type.GetType("System.Boolean")); dt.Columns.Add(dc);
3、添加数据
DataRow dr = dt.NewRow(); dr["column0"] = "AX"; dr["column1"] = true; dt.Rows.Add(dr);
4、移除数据
dt.Columns.Remove("column0");
4、判断是否有数据
//判断是否有数据 if (dt.Rows.Count > 0) { //有 }
5、查询
DataRow[] drs = dt.Select("column1 is null"); DataRow[] drss = dt.Select("column0 = 'AX'"); //返回第一条 DataRow dr = dt.Select("column1 is null").First(); //多条件用and连接 DataRow[] rows = dt.Select("column0 = 'AX' and column1 == true").First();
6、复制
//复制一个DataTable(有数据) DataTable dtNew = dt.Copy(); //复制一个空的DataTable(无数据) DataTable dtOnlyScheme = dt.Clone(); //将 DataRow 复制到 DataTable 中,保留任何属性设置以及初始值和当前值 DataRow[] rows = dt.Select("column0 = 'AX' and column1 == true").First(); foreach (DataRow row in rows) { dtNew.ImportRow(row);//复制行数据 }
7、DataRow赋值
DataRow drOperate = dt.Rows[0]; //方式一 drOperate["column0"] = "AXzhz"; drOperate["column1"] = false; //方式二 drOperate[0] = "AXzhz"; drOperate[1] = false; //方式三 dt.Rows[0]["column0"] = "AXzhz"; dt.Rows[0]["column1"] = false; //方式四 dt.Rows[0][0] = "AXzhz"; dt.Rows[0][1] = false;
8、把DataRow数据存到DataTable中
dtOnlyScheme.Rows.Add(dt.Rows[0].ItemArray);
9、转成字符串
System.IO.StringWriter sw = new System.IO.StringWriter(); System.Xml.XmlTextWriter xw = new System.Xml.XmlTextWriter(sw); dt.WriteXml(xw);//此处DataTable必须有名字 string s = sw.ToString();
10、筛选数据(详见DefaultView文章)
dt.DefaultView.RowFilter = "column1 <> true"; dt.DefaultView.RowFilter = "column1 = true";
11、排序
dt.DefaultView.Sort = "column0 ,column1 ASC"; dt = dt.DefaultView.ToTable();
12、判断一个字符串是否为DataTable的列名
bool flag = dt.Columns.Contains("AX");
13、取值
string str =dt.Rows[第几行]["字段名"].ToString(); string str =dt.Rows[第几行][第几列].ToString(); //for循环 for (int i = 0; i < dt.Rows.Count; i++) { string str = dt.Rows[i]["字段名"].ToString(); string str = dt.Rows[i][第几列].ToString(); } //foreach循环 foreach (DataRow dr in dt.Rows) { string str = dr["字段名"].ToString(); }

//创建DataTable对象 DataTable dt = new DataTable("Table_AX"); //为DataTable创建列 //方式一(我觉得这种好) dt.Columns.Add("column0", System.Type.GetType("System.String")); //方式二 DataColumn dc = new DataColumn("column1", System.Type.GetType("System.Boolean")); dt.Columns.Add(dc); //添加数据 DataRow dr = dt.NewRow(); dr["column0"] = "AX"; dr["column1"] = true; dt.Rows.Add(dr); //判断是否有数据 if (dt.Rows.Count > 0) { //有 } //查询 DataRow[] drs = dt.Select("column1 is null"); DataRow[] drss = dt.Select("column0 = 'AX'"); //复制一个DataTable(有数据) DataTable dtNew = dt.Copy(); //复制一个空的DataTable(无数据) DataTable dtOnlyScheme = dt.Clone(); //给DataRow赋值的三种方式 DataRow drOperate = dt.Rows[0]; //方式一 drOperate["column0"] = "AXzhz"; drOperate["column1"] = false; //方式二 drOperate[0] = "AXzhz"; drOperate[1] = false; //方式三 dt.Rows[0]["column0"] = "AXzhz"; dt.Rows[0]["column1"] = false; //方式四 dt.Rows[0][0] = "AXzhz"; dt.Rows[0][1] = false; //把DataRow数据存到DataTable中 dtOnlyScheme.Rows.Add(dt.Rows[0].ItemArray); //转成字符串 System.IO.StringWriter sw = new System.IO.StringWriter(); System.Xml.XmlTextWriter xw = new System.Xml.XmlTextWriter(sw); dt.WriteXml(xw);//此处DataTable必须有名字 string s = sw.ToString(); //筛选数据(详见DefaultView文章) dt.DefaultView.RowFilter = "column1 <> true"; dt.DefaultView.RowFilter = "column1 = true"; //排序 dt.DefaultView.Sort = "column0 ,column1 ASC"; dt = dt.DefaultView.ToTable(); //绑定的其实是DefaultView //gvTestDataTable.DataSource = dt; //gvTestDataTable.DataBind(); //判断一个字符串是否为DataTable的列名 bool flag = dt.Columns.Contains("AX");
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?