DataTable操作汇总
2024-09-03 08:54:05
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]);
最新文章
- IISExpress 调试使用学习,使用附加到进程进行快速调试
- Unity5 AssetBundle 打包以及加载
- Guava学习笔记:复写的Object常用方法
- 设计模式C#实现(三)——外观模式
- dedecms首页调用栏目内容和单页内容的方法
- BZOJ 4597 随机序列
- EasyUI - ComboBox 下拉组件
- 基础SELECT示例掌握
- 《JavaScript面向对象编程指南(第2版)》读书笔记(一)
- FND Debug Log(FND_LOG_MESSAGES)
- PPT设计灵感功能
- Spring Boot + Spring Cloud 构建微服务系统(三):服务消费和负载(Feign)
- UVA 11488 Hyper Prefix Sets (字典树)
- JCP与JSR
- shouldAutoRotate Method Not Called in iOS6
- 微信小程序——页面中调用组件方法
- English trip -- MC(情景课)3 D
- HTML绘制三角形的方法:
- MTCNN(Multi-task convolutional neural networks)人脸对齐
- swift 3新特性总结
热门文章
- 记录 mysql修改密码报错问题 (ERROR 1054 (42S22): Unknown column &#39;password&#39; in &#39;field list&#39;)
- Linux环境使用Docker安装SqlServer2017
- SpringCloudBus实现配置文件动态更新
- Docker部署Springboot+Vue项目
- 批量创建xshell会话
- flask中的线程隔离技术
- 【Go】类型转换
- Java程序(数组扩容的尝试)
- AI-Chat问答随笔
- myForEach