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

1、添加引用

using System.Data;

2、创建表

//创建一个空表

DataTable dt = new DataTable();

//创建一个名为"Table_New"的空表

DataTable dt = new DataTable("Table_New");

3、创建列

//1.创建空列

DataColumn dc = new DataColumn();

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);

4、创建行

//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);

5、赋值和取值

//新建行的赋值

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();

6、筛选行

//选择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");

7、删除行

//使用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);

}

8、复制表

//复制表,同时复制了表结构和表中的数据

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]);//这是加入的是第一行

9、表排序

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();//转为表

以上就是C# DataTable的使用方法,希望对大家学习C#程序设计有所帮助。

c#拷贝datatable行_C# DataTable使用方法详解相关推荐

  1. cmd中怎么打开计算机,如何打开命令行窗口?电脑打开cmd命令行窗口5大方法详解...

    现在,电脑已经成为了我们日常工作和生活的必需品了,所以学习一些知识还是很有必要的.比如说如何打开命令行窗口?如果你也不太会的话,可以一起来学习一下电脑打开cmd命令行窗口5大方法详解吧! 方法一: 1 ...

  2. 怎么用python读取csv文件、并且是读取行-python读取csv文件指定行的2种方法详解...

    csv是Comma-Separated Values的缩写,是用文本文件形式储存的表格数据,比如如下的表格 就可以存储为csv文件,文件内容是: No.,Name,Age,Score 1,Apple, ...

  3. python读取csv文件的方法-python读取csv文件指定行的2种方法详解

    csv是Comma-Separated Values的缩写,是用文本文件形式储存的表格数据,比如如下的表格 就可以存储为csv文件,文件内容是: No.,Name,Age,Score 1,Apple, ...

  4. linux find文件,并复制,通过find命令寻找文件并拷贝到一个指定目录方法详解

    有这样的一个需求,需要将一部分符合条件的文件从一个目录拷贝到另一个目录中,可以通过使用find命令从源目录查找到符合条件的文件然后使用cp命令拷贝到目标目录 将通过find命令找到的文件拷贝到一个新的 ...

  5. python统计csv行数_对Python 多线程统计所有csv文件的行数方法详解

    如下所示: #统计某文件夹下的所有csv文件的行数(多线程) import threading import csv import os class MyThreadLine(threading.Th ...

  6. python 命令-python解析命令行参数的三种方法详解

    这篇文章主要介绍了python解析命令行参数的三种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python解析命令行参数主要有三种方法: ...

  7. Day13-Java方法详解,方法的定义、重载,命令行传参,可变参数与递归

    Java方法详解 什么是方法? Java的方法是语句的集合,他们在一起执行一个功能 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法再程序中被创建,在其他地方被引用 [方法原子性]一个方 ...

  8. thinkphp3.1.3 getshell_C# / VB.NET 在PPT中创建、编辑PPT SmartArt图形的方法详解_C#教程...

    本文介绍通过C#和程序代码来创建和编辑PPT文档中的SmartArt图形.文中将分两个操作示例来演示创建和编辑结果. 使用工具:Spire.Presentation for .NET hotfix 5 ...

  9. php调用C代码的方法详解和zend_parse_parameters函数详解

    来源:http://my.oschina.net/Customs/blog/490873 http://blog.csdn.net/super_ufo/article/details/3863731 ...

最新文章

  1. python可以在linux运行_在linux运行python
  2. 经典C语言程序100例之八九
  3. 纯java生成excel
  4. ThinkPHP笔记——配置分组产生无法加载Index错误解决办法
  5. 软件工程软件开发成本度量规范_软件开发成本度量方法
  6. cocostudio学习之关于UIWidget需要add CCNode控件的问题
  7. python行业中性_知乎
  8. 去除CAJviewer右上侧的广告栏位去除CAJviewer右上侧的广告栏位
  9. mysql和redis常见面试题_redis相关面试题
  10. python中search函数用法_查找匹配函数FIND和SEARCH的基本用法
  11. 女孩做妻子前应知道的十件事
  12. PDF格式的“在线阅读”和“下载”
  13. 十年自学编程成才(编程小白必看)
  14. java中如何将字符串转化为字符_如何在Java中将字符串转换为运算符?
  15. Word中endnote选项无效,怎么处理?
  16. R语言科学计数法数据改变/丢失/失准,取消科学计数法的原因和解决方法
  17. 软件注册篇---注册码
  18. JAVA斗地主案例(单列)
  19. Linux ssh命令
  20. 关于中英文语料的获取途径总结

热门文章

  1. python主成分分析代码_PCA主成分分析 原理讲解 python代码实现
  2. 我不想上班,怎么才能成为自由职业…
  3. 一个.net6简单的图片上传(文件也可用)
  4. HCIA-存储虚拟化
  5. Linux 基础命令 -- su
  6. awtk开发实践——学习篇27: guage_pointer(仪表指针控件)
  7. 解析mysql不重复字段值求和
  8. win7对硬盘进行bitlocker解锁后再上锁
  9. 通过邮箱验证码找回密码
  10. 大白话翻译领域驱动设计的部分概念