DataTable运用
DataTable
dataDis.AsEnumerable().Sum(bu => bu["QtyPlan"].ConvertInt32());
ndata.TDefStyle.FirstOrDefault(Row => Row.Style.Equals(item.Key.TrimEx(), StringComparison.OrdinalIgnoreCase));
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();//转为表 |
10.表统计
|
dt.Compute("sum(qty)","billid =5")//统计billid为5的所有qty值 |
DataTable运用的更多相关文章
- DataTable 转换成 Json的3种方法
在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>.DataTable转换为Json格式.特别在使用Extjs框架的时候,A ...
- C#中将DataTable导出为HTML的方法
今天我要向大家分享一种将DataTable导出为到HTML格式的方法.有时我们需要HTML格式的输出数据, 以下代码就可以帮助我们达到目的,. 首先,我们要绑定DataTable和 DataGridV ...
- DataTable转换成IList<T>的简单实现
DataTable的无奈 很多时候,我们需要去操作DataTable.但DataTable的操作,实在是太不方便了.Linq?lambda表达式?统统没有... 特别是对现有结果集做进一步筛选,这样的 ...
- 自用的基于Emit的C#下DataTable转实体类方法
之前一直在做WebForm的开发,数据绑定时直接DataTable绑定Gridview很方便,但是最近开始往MVC转,数据列表的传递和页面展示基本上是以List为主,像下面这样,遍历实体类的各个字段去 ...
- jquery dataTable汉化(插件形式)
1.jquery dataTable.js 官网:http://datatables.net/ 中文:http://dt.thxopen.com/ 2.汉化提示信息(放到xx.js中,引入即可) 注: ...
- DataTable与DTO对象的简易转换类
在web开发过程中,有时候为了数据传输的方便,比如:后台需要更新前端的ViewModel,此时我们定义一个与前端ViewModel结构一样的DTO对象,从数据层获取数据后,将数据封装成DTO然后序列化 ...
- asp.net DataTable导出Excel 自定义列名
1.添加引用NPOI.dll 2.cs文件头部添加 using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System.IO; 3.代码如 ...
- asp.net dataTable转换成Json格式
/// <summary> /// dataTable转换成Json格式 /// </summary> /// <param name="dt"> ...
- DataTable的orderby有关问题
在网上找了一个在后台重新对DataTable排序的方法(之所以不在数据库是因为我生成的是报表,写了存储过程用的表变量,order by也要用变量,死活拼不起来,sql能力没过关,动态sql也试了) s ...
- 关于c#在DataTable中根据条件删除某一行
我们经常会将数据源放在DataTable里面,但是有时候也需要移除不想要的行,下面的代码告诉你们 DataTable dts: DataRow[] foundRow; ...
随机推荐
- tf.contrib.legacy_seq2seq.basic_rnn_seq2seq 函数 example 最简单实现
tf.contrib.legacy_seq2seq.basic_rnn_seq2seq 函数 example 最简单实现 函数文档:https://www.tensorflow.org/api_doc ...
- TCP连接与HTTP请求
一道经典面试题: 从 URL 在浏览器被被输入到页面展现的过程中发生了什么? 相信大多数准备过的同学都能回答出来,但是如果继续问:收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式.什么顺 ...
- String是否相等、new的时候创建了几个对象等问题详解
问题一 这段代码创建了几个对象? String str1 = new String("aa"); 答案是两个 "aa"对象和String对象 Java代码在编译 ...
- C - 啥~ 渣渣也想找玩数字 HDU - 2141(有序序列枚举 + 二分优化查找)
题目描述 可爱的演演又来了,这次他想问渣渣一题... 如果给你三个数列 A[],B[],C[],请问对于给定的数字 X,能否从这三个数列中各选一个,使得A[i]+B[j]+C[k]=X? 输入 多组数 ...
- JSP+SSH+Mysql+C3P0实现的传智播客网上商城
项目简介 项目来源于:https://gitee.com/2121/shop 本系统是传智播客授课时的开发案例,基于JSP+SSH+Mysql的简单网上商城.在当代开发中,SSH的使用已经逐渐被SSM ...
- SSM项目依赖,spring5.1.9
SSM项目依赖,spring5.1.9 简单的SSM项目,未加AOP等等操作 Spring三包bean core content Mybatis 五个mybatis mybatis-spring jd ...
- 原地算法(in-place algorithm)
原地算法(in-place algorithm) 在计算机科学中,一个原地算法(in-place algorithm)基本上不需要额外辅助的数据结构,然而,允许少量额外的辅助变量来转换数据的算法.当算 ...
- 搭建DVWA Web渗透测试靶场
文章更新于:2020-04-13 按照惯例,需要的文件附上链接放在文首. 文件名:DVWA-1.9-2020.zip 文件大小:1.3 M 文件说明:这个是新版 v1.9 (其实是 v1.10开发版) ...
- zendframework3
1.开发时关闭cache,正式上线后打开cache application config file (config/application.config.php), disable this cac ...
- 汇编刷题:屏幕显示 HOW ARE YOU!
DATA SEGMENT INFO DB 'HOW ARE YOU!$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DAT ...