C# DataTable用法详解

【C#关键字】DataTable DataTable是一个临时保存数据的网络虚拟表,表示内存中数据的一个表,是一个二维表,也是一个后台数据源和前台显示之间的适配器。一、DataTable是什么?一、DataTable是什么? 阅读详情
AI摘要

本文详细介绍了DataTable的基本概念、常用属性和方法,包括创建、添加列和行、赋值取值、筛选行、删除行、复制表以及排序等操作。DataTable是.NET中用于临时存储数据的表格,常用于后台数据源和前端显示之间的适配。通过示例代码展示了如何高效地使用DataTable进行数据操作。


前言

目前我接触到的项目中好多都用DataTable,所以我来记录一下DataTable的一些优点,及使用方法。

一、DataTable是什么?

DataTable 是一个临时保存数据的网格虚拟表,表示内存中数据的一个表,是一个二维表,也是一个后台数据源和前台显示之间的适配器。

二、常用的属性及方法

1.常用属性

      CaseSensitive    指示表中的字符串比较是否区分大小写。 
      ChildRelations   获取此DataTable 的子关系的集合。 
      Columns          获取属于该表的列的集合。 
      Constraints      获取由该表维护的约束的集合。 
      DataSet          获取此表所属的DataSet。 
      DefaultView      获取可能包括筛选视图或游标位置的表的自定义视图。 
      HasErrors        获取一个值,该值指示该表所属的DataSet 的任何表的任何行中是否有错误。 
      MinimumCapacity  获取或设置该表最初的起始大小。该表中行的最初起始大小。默认值为 50。 
      Rows             获取属于该表的行的集合。 
      TableName        获取或设置DataTable 的名称。

2.常用方法

  • BeginInit() 开始初始化在窗体上使用或由另一个组件使用的

  • DataTable。 初始化发生在运行时。

  • Clear() 清除所有数据的DataTable。

  • Clone() 克隆DataTable 的结构,包括所有DataTable 架构和约束。

  • EndInit() 结束在窗体上使用或由另一个组件使用的DataTable 的初 始化。初始化发生在运行时。

  • ImportRow(DataRow row) 将DataRow 复制到DataTable 中,保留任何属性设置以及初始值和当前值。

  • Merge(DataTable table) 将指定的DataTable 与当前的DataTable 合并。

  • NewRow() 创建与该表具有相同架构的新DataRow。

三、常用的使用方法

1.创建

//创建一个空表
DataTable dt = new DataTable();
//创建一个名为"Table_New"的空表
DataTable dt = new DataTable("Table_New");
//DataTable(string tableName, string tableNamespace) 
//指定的表名和命名空间初始化DataTable类的新实例
DataTable dt = new DataTable("Table_New","Test");

2.添加列

DataColumn dc = new DataColumn();
//1.创建空列
dt.Columns.Add(dc);
//2.创建带列名和类型名的列(两种方式任选其一)
dt.Columns.Add("column0", System.Type.GetType("System.String"));
dt.Columns.Add("column0", typeof(String));
//3.通过列架构添加列
DataColumn dc = new DataColumn("column1",System.Type.GetType("System.DateTime"));
DataColumn dc = new DataColumn("column1", typeof(DateTime));
dt.Columns.Add(dc);

3.添加行

//1.创建空行
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
//2.创建空行
dt.Rows.Add();
//3.通过行框架创建并赋值
dt.Rows.Add("张三",DateTime.Now);//Add里面参数的数据顺序要和dt中的列的顺序对应 
//4.通过复制dt2表的某一行来创建
dt.Rows.Add(dt2.Rows[i].ItemArray);

4.赋值取值

//新建行的赋值
DataRow dr = dt.NewRow();
dr[0] = "张三";//通过索引赋值
dr["column1"] = DateTime.Now; //通过名称赋值
//对表已有行进行赋值
dt.Rows[0][0] = "张三"; //通过索引赋值
dt.Rows[0]["column1"] = DateTime.Now;//通过名称赋值
//取值
string name=dt.Rows[0][0].ToString();
string time=dt.Rows[0]["column1"].ToString();

5.筛选行

//选择column1列值为空的行的集合
DataRow[] drs = dt.Select("column1 is null");
//选择column0列值为"李四"的行的集合
DataRow[] drs = dt.Select("column0 = '李四'");
//筛选column0列值中有"张"的行的集合(模糊查询)
DataRow[] drs = dt.Select("column0 like '张%'");//如果的多条件筛选,可以加 and 或 or
//筛选column0列值中有"张"的行的集合并按column1降序排序
DataRow[] drs = dt.Select("column0 like '张%'", "column1 DESC");
//DataTable.Select()方法里面支持简单的过滤和排序,不支持复杂的条件过滤和排序。里面的字符串必须是列名和数据,以及>,<,=,<>等关系运算符。
DataRow[] drs = dt.Select("column0 = '李四' and column0 = '1'");

6.删除行

//使用DataTable.Rows.Remove(DataRow)方法
dt.Rows.Remove(dt.Rows[0]);
//使用DataTable.Rows.RemoveAt(index)方法
dt.Rows.RemoveAt(0);
//使用DataRow.Delete()方法
dt.Row[0].Delete();
dt.AcceptChanges();
 
//-----区别和注意点-----
//Remove()和RemoveAt()方法是直接删除
//Delete()方法只是将该行标记为deleted,但是还存在,还可DataTable.RejectChanges()回滚,使该行取消删除。
//用Rows.Count来获取行数时,还是删除之前的行数,需要使用DataTable.AcceptChanges()方法来提交修改。
//如果要删除DataTable中的多行,应该采用倒序循环DataTable.Rows,而且不能用foreach进行循环删除,因为正序删除时索引会发生变化,程式发生异常,很难预料后果。
for (int i = dt.Rows.Count - 1; i >= 0; i--)
{
  dt.Rows.RemoveAt(i);
}

7.复制表

//复制表,同时复制了表结构和表中的数据
DataTable dtNew = new DataTable();
dtNew = dt.Copy();
//复制表
DataTable dtNew = dt.Copy(); //复制dt表数据结构
dtNew.Clear() //清空数据
for (int i = 0; i < dt.Rows.Count; i++)
{
  if (条件语句)
  {
     dtNew.Rows.Add(dt.Rows[i].ItemArray); //添加数据行
  }
}
//克隆表,只是复制了表结构,不包括数据
DataTable dtNew = new DataTable();
dtNew = dt.Clone();
//如果只需要某个表中的某一行
DataTable dtNew = new DataTable();
dtNew = dt.Copy();
dtNew.Rows.Clear();//清空表数据
dtNew.ImportRow(dt.Rows[0]);//这是加入的是第一行

8.表排序

DataTable dt = new DataTable();//创建表
dt.Columns.Add("ID", typeof(Int32));//添加列
dt.Columns.Add("Name", typeof(String));
dt.Columns.Add("Age", typeof(Int32));
dt.Rows.Add(new object[] { 1, "张三" ,20});//添加行
dt.Rows.Add(new object[] { 2, "李四" ,25});
dt.Rows.Add(new object[] { 3, "王五" ,30});
DataView dv = dt.DefaultView;//获取表视图
dv.Sort = "ID DESC";//按照ID倒序排序
dv.ToTable();//转为表

这些便是DataTable的一些常用方法
参考:https://www.cnblogs.com/qianqian528/p/8456351.html


总结

以上就是我整理的DataTable的一些经常使用的方法啦,希望对大家又所帮助。

【C#语言】DataTable 【C#语言】DataTable。 阅读详情

相关推荐

C# 之 DataTable 详解

▪ 添加引用 using System.Data; ▪ 创建表 // 方法一:创建一个空表 DataTable dt = new DataTable(); // 方法二:创建一个名为"admin"的空表 DataTable dt = new DataTable("admin"); ▪ 创建列 // 方法一:创建空列 DataColumn dc = new DataColumn(); dt.Columns.Add(dc); // 方法二:创建带列名和类型名的列 dt.Columns.Add("pass

外来物种 2745

C# DataTable

C# DataTable的基本应用

Ryangfeng 7325

当今用于探测和阻止无人机的 10 种反无人机技术

利用反无人机技术应对无人机威胁。

网络研究观 3544

DataTable用法详解

DataTable dt = ds.Tables [0]; int rows = dt.Rows.Count ; for(int i=0;i<rows;i++) { DataRow currentRow = dt.Rows[i]; string val1 = currentRow["nu.

qq_34059233的博客 8275

MagicDraw小白必看:BDD图中模块的5种属性详解(含SysML v1.6最新端口配置指南)

本文面向MagicDraw初学者,详细解析SysML BDD图中模块的五种核心结构属性,包括组成部分、引用、值、约束属性及端口。重点阐述了SysML v1.6中端口设计的范式转移,对比了完整端口与代理端口的区别与应用场景,并通过实战案例指导如何利用代理端口进行清晰的接口定义与系统架构设计。

rum55的博客 374

基于YOLOv10的机器人抓取引导系统:从物体检测到精准抓取

python# 数据标注工具简化版import os"""启动标注工具""""""标注单张图像"""print(f"标注图像: {os.path.basename(img_path)}")print("请在图像上绘制抓取矩形框...")# 这里应该实现交互式标注界面# 简化版本直接返回示例标注# 示例标注数据"""保存标注结果"""# 保存为YOLO格式# 转换为YOLO格式。

YOLO 378

dataTable的简单使用方法

dataTable的使用方法在项目中常常常使用到DataTable,假设DataTable使用得当,不仅能使程序简洁有用,并且可以提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结。

jiang_chen_xi的博客 3665

PHP实现获取当地网络时间​(附完整源码)

PHP实现获取当地网络时间​(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 237

C# Datatable的Select()用法与赋给新的DataTable

C# Datatable的Select()用法与赋给新的DataTable 关键内容 select 方法,返回值为 DataRow[] select这个方法,4个重载 1:Select() //默认筛选全部 2:Select(string filterExpression)//表达式,支持 and ,like , or ,>=,<=,=,>,< 3:Select(strin...

Transform 1万+

TPAMI 2025 | 从缺失碎片到杰作:基于上下文自适应扩散的图像修复

图像修复是一项具有挑战性的任务,尤其是要确保生成的内容与图像的现有部分无缝融合。尽管最近的扩散模型展现出了潜力,但它们在保持已知区域和未知(缺失)区域之间的连贯性方面常常遇到困难。这个问题源于扩散过程中缺乏明确的空间和语义对齐,导致生成的内容无法与原始图像平滑融合。此外,扩散模型通常依赖全局学习分布,而非局部特征,这使得生成的图像部分与现有图像部分之间存在不一致。在这项工作中,作者提出了ConFill,这是一个新颖的框架,引入了上下文自适应差异(CAD)模型,以确保在整个扩散过程中,已知区域和未知区域的中间

小白学视觉 240

符合DO-178C和DO-331的机载软件研制体系

DO-178C的核心要求软件开发生命周期:DO-178C定义了软件开发的生命周期过程,包括需求获取、设计、实现、验证和确认等。它为机载软件开发提供了一套系统化的指导,确保在开发过程中考虑安全性和可靠性。安全等级(DAL):根据系统的重要性,DO-178C将软件划分为不同的开发保障等级(DAL A到E),DAL A的要求最为严格,适用于关键安全功能,而DAL E的要求较低,适用于非关键功能。DO-178C在非基于模型软件开发中的应用。

qq_41854911的博客 980

c# DataTable用法详情

1、添加引用using System.Data; 2、创建表 //创建一个空表 DataTable dt = new DataTable();//创建一个名为"Table_Null"的空表 DataTable dt = new DataTable("Table_Null"); 3、创建列 //1.创建空列 DataColumn dc = new DataColumn(); dt.Colum...

qq_38396292的博客 3804

FLUENT Meshing Watertight Geometry工作流入门 - 4 局部加密区域

总结一下本课程中学到的内容:我们了解了如何使用模型中特定兴趣区域的BOI和FOI局部尺寸控制来加密网格。然后,了解了如何使用Box类型的局部细化区域。最后,学习了Ansys Fluent Meshing Watertight Geometry Workflow的Offset Surface类型创建局部细化区域任务。

B_etter_Man的博客 6647

在C#中Datatable的几种用法

在C#中,从数据库中读取出来的数据一般都会存储在datatable中。datatable其实也是一张表,就像是从数据库中将检索出来的结果copy到datatable中一样。datatable的内部数据结构就是这样的 一个二维表。 下面介绍一下datatable中的几种用法。 添加引用 //引用命名空间 using System.Data; 创建表 //创建一个空表 DataTable dt = ...

贺天远 廊坊师范学院信息技术提高班十五期 2165

用 ABAP CDS View 把数据稳定抽到 SAP BW/4HANA:从 ODP 架构到增量机制的落地实践

本文探讨了SAP数据仓库中从业务系统抽取数据到SAP BW/4HANA的最佳实践,重点分析了基于ABAP CDS视图的抽取方法。文章指出CDS视图通过注解可实现元数据描述、增量机制的统一管理,替代传统抽取器。详细介绍了ODP架构如何作为抽取基础设施,以及从CDS到BW的完整链路。同时比较了三种增量抽取方式(BW管理时间戳、ODP通用增量、CDC触发器)的适用场景和注意事项,并强调版本兼容性和云环境连接差异对实施的影响。通过实际案例说明合理选择增量策略对数据仓库稳定性的重要性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 332

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

C# DataTable详细用法

C# DataTable详细用法 通过经常使用的项目中的DataTable,假设DataTable使用得当,不仅能使程序简洁有用。并且可以提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结。 一、DataTable简单介绍 (1)构造函数 DataTable()不带參数初始化DataTabl...

cxu123321的博客 1439

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C# 熟悉的DataTable用法详解

* 过去 * 可以不访问数据库吗 * datatable操作 3.1 datatable自定义 3.2 datatable 排序 * end * 过去 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最早接触DataTable是机房重构的时候,那时的datatable用于接收数据库返回的数据,当时的自己还在纠结,是要用datatable ...

No body But u 3926

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C# DataTable 去重

C# DataTable 的一些用法 去重 DataTable datatable = new DataTable(); datatable.DefaultView.ToTable(true); 未完,查看如些页面 https://www.cnblogs.com/Fooo/p/6666825.html?utm_source=itdadao&utm_medium=referral

u012577058的博客 6072

C# DataTable 用法简介

C# DataTable 的常见用法: (1)新建数据表。 DataTable dt=new DataTable();如果带个String参数,此参数表示表名。 (2)向表添加列。 //数据库的Nvarchar等类型,在此可用String兼容。可不指明数据类型 DataColumn dc = new DataColumn("商品编号", typeof(system.string)); dt.C...

Doublelv 的博客专栏。 1806

c#拷贝datatable行_C# DataTable使用方法详解

在项目中常常常使用到DataTable,假设DataTable使用得当,不仅能使程序简洁有用,并且可以提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结。1、添加引用using System.Data;2、创建表//创建一个空表DataTable dt = new DataTable();//创建一个名为"Table_New"的空表DataTable dt = new Da...

weixin_31067223的博客 1259

C# DataTable 详解

C# DataTable 详解 转自:https://www.cnblogs.com/Sandon/p/5175829.html 添加引用 using System.Data; 创建表 //创建一个空表 DataTable dt = new DataTable(); //创建一个名为"Table_New"的空表 DataTable dt = new DataTable(“Table_New”); ...

c1149884598的博客 329

c# 关于DataTable的用法

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient; using System.Threading; namespace CAlianxe1 { class Program

脚踏实地 1069

c# DataTable用法

一  实验结果:  二 代码 using System; using System.Collections.Generic; using System.Data; using System.Text; namespace list { class Program { static void Main(string[] args) {

nocomment_84的博客 385

详解C#利用DataTable导出Excel

本文主要实现利用总表向分表中添加数据,主界面如下: 在整个小项目中主要有一下几个关键步骤:Excel表的读取及转成datatable进行相关的数据操作,到后面datatable转成excel保存, 整个代码如下:using System; using System.Collections.Generic; using System.Collections; using System.Com

qq_30401659的博客 2258

java datatable用法_C# DataTable用法示例详解|DataTable Select,sort排序,Linq过滤操作

C# DataTable用法示例详解,将会对C# DataTable select,sort排序,Linq过滤等常用方法进行简单的讲解先来看看DataTable Select方法有哪几种,如下表所示:NameDescriptionSelect()Gets an array of allDataRowobjects. #查找所有数据,返回DataRow数组(以下全部返回数组)Select(S...

weixin_33711795的博客 1002
上一篇: 用 prototype 定义自己的方法
下一篇: vue前端界面 el-table将接口传入的数据转换成想要的文字显示
灯火明亮
博客等级 码龄6年 97粉丝 19原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值