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

5.FxBlue跟单常见问题

fxblue喊单ea和fxblue跟单会在mt4/mt5客户端ea栏目里记录fxblue在跟单复制订单过程中的全面记录。在遇到问题时,我们首先要恢复默认参数尝试,然后再到ea栏找报错提示。 ​ 需要注意的是,是EA选项卡,而不是日志选项卡。 此外,您可以在 MT4/5 软件终端面板的"EA"选项卡中查看跟单记录,您可以通过右键单击 Experts 日志并从 MT4/5 的弹出菜单中选择“打开”来打开每日日志文件以及历史文件。 5.1 No “heartbeat” received 没有收到“心跳” 接收方

weixin_44406393的博客 1874

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

TOD和PPS精确时间同步技术

授时

u010783226的专栏 1万+

Win10 / Win11 启用 Hyper-V 虚拟机详细教程(图文+命令行全攻略)

摘要:本文详细介绍Windows10/11系统启用Hyper-V虚拟化平台的方法,包含专业版/企业版的图形界面和PowerShell命令行操作,以及家庭版通过脚本强制启用的特殊方案。内容涵盖版本支持对比、操作步骤图解、常见问题解答和性能优化建议,帮助开发者快速搭建虚拟化环境进行多系统测试。附微软官方文档参考链接和详细操作示意图。

ElioXu 7077

dataTable的简单使用方法

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

jiang_chen_xi的博客 3665

文末含资料链接和视频讲解!YOLOv8集成CoordAtt注意力机制详细教程

本文详细介绍了如何在YOLOv8目标检测框架中集成CoordAtt注意力机制。首先解析了CoordAtt的工作原理,它通过分解式池化将位置信息嵌入到通道注意力中,相比传统注意力机制具有更好的空间信息保持能力。然后提供了PyTorch实现代码解析,包括自适应平均池化、Hard-Swish激活函数等关键实现细节。最后概述了YOLOv8架构,为后续集成CoordAtt提供基础。该教程适合具备深度学习基础的开发者,将理论与实践结合,帮助读者掌握这一目标检测优化技术。

FJN110的博客 266

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万+

uniapp - H5网页uni.getLocation报错getLocation:fail Geolocation permission denied.Get ipLocation failed.

uni.getLocation getLocation:fail Geolocation permission denied.Get ipLocation failed.,uni.getLocation定位失败,uni-app getLocation()无法获取定位,一直fail()uniapp移动端h5网页,uniApp微信内置浏览器定位失败,如何解决这个问题,uniapp h5 uni.getLocation获取位置失败怎么办,UNI-APP获取当前位置,uni.getLocation定位失败,unia

🏆 前端领域优质创作者 4243

Langchain cannot connect with Azure SQL Database

Langchain 无法连接到 Azure SQL 数据库

suiusoar 633

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

基于Flink的流式数据降维实现方案

理解为何实时场景需要降维(解决维度灾难)掌握Flink流处理与降维算法的结合方式学会用Flink实现一个可落地的流式降维系统覆盖内容包括:Flink流处理基础、降维算法选择(侧重在线算法)、Flink与降维的集成方案、实战代码示例,以及工业级场景的应用经验。本文从“为什么需要流式降维”出发,用“快递分拣”的生活案例引出核心概念;接着拆解Flink流处理、数据降维的底层逻辑;然后重点讲解“在线PCA”这一适合流式场景的降维算法,并用Flink实现一个完整的流式降维管道;

AI 领航者的博客 567

在C#中Datatable的几种用法

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

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

UFAST车道线检测 Ultra-Fast-Lane-Detection 从环境搭建到复现完成(一)

UFAST车道线检测 Ultra-Fast-Lane-Detection 从环境搭建到复现完成(一)

m0_46364958的博客 4345

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C# DataTable详细用法

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

cxu123321的博客 1439

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

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

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

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、付费专栏及课程。

余额充值