DataTable操作汇总
1、排序
DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("Age");//因为是字符串,所以排序不对
dt.Rows.Add("小明", "21");
dt.Rows.Add("小张", "10");
dt.Rows.Add("小红", "9");
dt.Rows.Add("小伟", "7");
dt.Rows.Add("小美", "3");
dt.DefaultView.Sort = "Age ASC";
dt = dt.DefaultView.ToTable();
2、dataTable根据列的值筛选出数据行
DataRow[] flightInfoRows = keyParaDt.Select("fli_id = '" + afliid + "'");
注意:DataTable.Select()方法里面支持简单的过滤和排序,不支持复杂的条件过滤和排序。里面的字符串必须是列名和数据,以及>、<、=、<>、等关系运算符 ,注意oracle的函数不能使用,如lower、substr等对列数据进行处理的函数。还有一点也很关键。Select操作是大小写不敏感的(记录的字段不敏感),如果需要区分大小写,需要将DataTable的caseSensitive属性设为true。例如,看一下语句,报错
DataTable dtq = dtPara.Select("LOWER(SUBSTR(name,0,1)) = 'q'").CopyToDataTable();
需要查找name字段首字母为q或Q的记录。由上面的分析,可以用以下语句代替
DataTable dtq = dtPara.Select("name like 'q%'").CopyToDataTable();
3、dataRow[]转换为dataTable
DataTable flightInfo = flightInfoRows.CopyToDataTable();
4、复制dataTable,包含结构和数据
//克隆表的结构。但不复制数据
DataTable newDataTable = oldDataTable.Clone();
object[] obj = new object[newDataTable.Columns.Count]; for (int i = 0, count = oldDataTable.Rows.Count; i < count; i++)
{
oldDataTable.Rows[i].ItemArray.CopyTo(obj, 0);
newDataTable.Rows.Add(obj);
}
或者
//克隆表的结构。但不复制数据
DataTable newDataTable = oldDataTable.Clone(); for (int i = 0, count = oldDataTable.Rows.Count; i < count; i++)
{
DataRow row = newDataTable.NewRow();
row.ItemArray = oldDataTable.Rows[i].ItemArray;
newDataTable .Rows.Add(row);
}
注意以下的写法是错误的,报错“该行已经属于另一个表”,因为DataRow是引用类型的,不能同时被两个DataTable包含。
newDataTable.Rows.Add(oldDataTable.Rows[i]);
DataTable操作汇总的更多相关文章
- [C#] DataTable 操作汇总(持续更新)
1.DataTable 分组操作 var grow = dt.Select().GroupBy((row1) => { return new { //分组的字段 fieldA = row1[&q ...
- PHP数组操作汇总
php 操作数组 (合并,拆分,追加,查找,删除等) - Just Code - ITeye技术网站 PHP操作数组的一些函数介绍 -- 简明现代魔法 PHP数组元素操作实例 -- 简明现代魔法 儿童 ...
- 提升效率的Linux终端快捷操作汇总
很多普通 Linux 桌面用户都对使用终端感到排斥和恐惧,其实它没大家想的那么复杂,很多常见操作都可以直接在终端中进行,如:安装软件.升级系统等. 无论你是新手还是 Linux 终端使用的老鸟,系统极 ...
- SQL字符串操作汇总
SQL字符串操作汇总 --将字符串中从某个字符开始截取一段字符,然后将另外一个字符串插入此处 select stuff('hello,world!',4,4,'****') --返回值hel*** ...
- Oracle知识梳理(三)操作篇:SQL基础操作汇总
Oracle知识梳理(三)操作篇:SQL基础操作汇总 一.表操作 1.表的创建(CREATE TABLE): 基本语句格式: CREATE TABLE table_name ( col_ ...
- SQL基础操作汇总
SQL基础操作汇总 一.表操作 1.表的创建(CREATE TABLE): 基本语句格式: CREATE TABLE table_name ( col_name datatype, -- ...
- Java IO流操作汇总: inputStream 和 outputStream【转】
我们在进行Android java 开发的时候,经常会遇到各种IO流操作.IO流操作一般分为两类:字符流和字节流.以“Reader”结尾都是字符流,操作的都是字符型的数据:以“Stream”结尾的都是 ...
- js中的DOM操作汇总
一.DOM创建 DOM节点(Node)通常对应于一个标签,一个文本,或者一个HTML属性.DOM节点有一个nodeType属性用来表示当前元素的类型,它是一个整数: Element,元素 Attrib ...
- C# LINQ系列:LINQ to DataSet的DataTable操作 及 DataTable与Linq相互转换
LINQ to DataSet需要使用System.Core.dll.System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System. ...
- vim编辑器操作汇总
VIM - Vi IMproved 7.4 编辑器操作汇总 vim [参数] [文件 ..] 编辑指定的文件 或: vim [参数] - 从标准输入(stdi ...
随机推荐
- MySQL8.0 存储引擎(InnoDB )buffer pool的实现原理
数据库为了高效读取和存储物理数据,通常都会采用缓存的方式来弥补磁盘IO与CPU运算速度差.InnoDB 作为一个具有高可靠性和高性能的通用存储引擎也不例外,Buffer Pool就是其用来在内存中 ...
- Linux查询CPU,内存,硬盘使用率以及网卡流量指令
Linux查询CPU,内存,硬盘使用率以及网卡流量指令 1.获取cpu使用率 //cpu `top -b -n1 | fgrep "Cpu" | awk '{print 100-$ ...
- [JavaScript]对象数组 - 不完全整理
对象数组中查询属性为某个值的对象,使用Array.find() const array1 = [5, 12, 8, 130, 44]; const found = array1.find(elemen ...
- iOS组件化 pod命令创建私有库详解【引用其他私有库、oc、Swift混编】
1.命令创建pod pod lib create pod的名字 2.根据指令依次填写信息 3.填写完成后会自动打开项目 .然后修改podspec文件即可 4.创建当前pod的git 仓库.将当前代码放 ...
- [Linux系统]安装时出现Requires: libc.so.6(GLIBC_2.17)(64bit) Requires: systemd Requires: libstdc++.so时解决办法
yum install glibc.i686 yum list libstdc++*
- 性能测试工具locust压测介绍
官方文档:https://docs.locust.io/en/stable/index.html 1.初识locust Locust 完全基本 Python 编程语言,采用python 编写压测脚本, ...
- centos安装Jenkins报错
[SKIPPED] jenkins-2.249.3-1.1.noarch.rpm: Already downloaded warning: /var/cache/dnf/jenkins-0919f06 ...
- Jest - Testing Asynchronous
When we test asynchronous, we use Axios to get the response. install the Axios npm i axios Cause we ...
- 解决Vue刷新后页面数据丢失的问题(sessionStorage和localStorage的用法)
一.为什么刷新后数据会丢失 vuex存储的数据只是在页面中,相当于全局变量,页面刷新的时候vuex里的数据会重新初始化,导致数据丢失. 因为vuex里的数据是保存在运行内存中的,当页面刷新时,页面会重 ...
- C# Thread.Join()作用
Thread.Join()在MSDN中的解释:Blocks the calling thread until a thread terminates 阻塞calling thread,直到当前join ...