(4)DataTable
引用
using System.Data;
创建DataTable
DataTable dt = new DataTable();
//指定表明,当把这个table添加到dataset时你就可以用dataset.table["tablename"]取到这个表对象
//如果不写的话,在dataset中取这个表的时候只能通过索引来取 也就是0,1,2...这种形式来取
DataTable dt =new DataTable("员工信息");
给DataTable增加两列
dt.Columns.Add("员工年龄");
dt.Columns.Add("员工姓名");//默认存或取datatable里的数据都是obj类型。存的时候可以加限制,该列只能存什么类型的数据,实际上还是obj
//或者
dt.Columns.Add("员工年龄", typeof(int));
dt.Columns.Add("员工姓名", typeof(string));
给DataTable增加行(有列才能加入行数据)
//创建和表dt相同架构的一行
DataRow dr1 = dt.NewRow();
dr1["员工年龄"] = 28;
dr1["员工姓名"] = "沈腾";
dt.Rows.Add(dr1); //把该行存进dt //或者用索引的方式加入数据
DataRow dr2 = dt.NewRow();
dr2[0] = 32;
dr2[1] = "马丽";
dt.Rows.Add(dr2);
//遍历打印dt数据
for (int x = 0; x < dt.Columns.Count; x++)
{
for (int y = 0; y < dt.Rows.Count; y++)
{
string strName = dt.Rows[x][y].ToString();
Console.WriteLine(strName);
}
}
Console.ReadKey();
或者
foreach (DataRow row in dt.Rows)
{
foreach (DataColumn column in dt.Columns)
{
Console.WriteLine(row[column]);
}
}
Console.ReadKey()
属性及属性的方法:
//设置表名
dt.TableName = "员工信息";
dt.Columns是DataColumnCollection 类
//获得列名集合
DataColumnCollection dc = dt.Columns;
// 检查集合是否包含具有指定名称的列,返回布尔值
bool f = dt.Columns.Contains("员工年龄");
//返回该列索引
int a = dt.Columns.IndexOf("员工姓名");
//删除该列
dt.Columns.Remove("员工姓名");
//删除索引所在的列
dt.Columns.RemoveAt(0);
string str1 = Convert.ToString(dt.Columns["员工年龄"]);
string str2 = Convert.ToString(dt.Columns[1]);
Console.WriteLine(str1+str2);
结果:
//在末尾增加一列
dt.Columns.Add("员工住址");
dt.Rows是DataRowCollection类
//第一行第二列
dt.Rows[0][1].ToString();
//获取此行的所有值,返回object类型
dt.Rows.Add(dt.Rows[0].ItemArray);
//插入1行数据 --没测过
dt.Rows.InsertAt(dr, 1);
datatable方法:
//清空表中的数据,但结构还在
dt.Clear();
//插入一行数据
dt.ImportRow(dr2);
DataTable dt2 = new DataTable("员工信息2");
//克隆表的结构
dt2 = dt.Clone();
//克隆表的结构并且复制表的数据
dt2 = dt.Copy();
//把dt2合并到dt1,相同列名数据合并,不同列名单独一列
dt1.Merge(dt2);
//获得表名
string str = dt.ToString();
//统计列数
dt.Columns.Count;
dt.Select() ---给datatable排序
//返回DataRow对象数组
DataRow[] rows = dt.Select();
for (int i = 0; i < rows.Length; i++)
{
Console.WriteLine(rows[i]["员工年龄"]);
}
Select(String)
//支持and
Select("员工年龄>=18 and 员工年龄<=35");
//支持or //支持like
Select("员工姓名 like '沈%' or 员工姓名 like '马%'");
Select(String, String)
//参数2 排序
DataRow[] dr = dt.Select("员工年龄>5", "员工年龄 desc");
xml转DataTable
//将 XML 架构和数据读入 DataTable 使用指定 Stream
ReadXml(Stream);
//将 XML 架构和数据读入 DataTable 从指定的文件
ReadXml(String);
//读取 XML 架构到 DataTable 使用指定的流
ReadXmlSchema(Stream);
//读取 XML 架构到 DataTable 从指定的文件
ReadXmlSchema(String);
//Stream 可以替换成 String类型、TextWriter类型、XmlWriter类型
WriteXml(Stream)
//
WriteXml(Stream, Boolean)
//
WriteXml(Stream, XmlWriteMode)
//
WriteXml(Stream, XmlWriteMode, Boolean)
//Stream 可以替换成 String类型、TextWriter类型、XmlWriter类型
WriteXmlSchema(Stream)
//
WriteXmlSchema(Stream, Boolean)
(4)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; ...
随机推荐
- nginx静态资源web服务
静态资源:非服务器动态运行生成的文件 浏览器端渲染:html ,css,js 图片:jpeg,gif,png 视频:flv ,mpeg 文件:txt,等任意下载文件 静态资源服务场景:CDN 文件读取 ...
- Manjaro 添加国内源和安装搜狗输入法
Manjaro 系统虽然比 Ubuntu 用着稳定,但有些小地方没有 Ubuntu 人性化,比如默认安装完的系统貌似没有中国的,Ubuntu 估计是用的人多,所以安装完后会根据所在地给你配置更新的源. ...
- matplotlib学习记录 六
# 绘制多数据条形图 # 假设你知道了列表a中电影分别在2017-09-14(b_14),2017-09-15(b_15), # 2017-09-16(b_16)三天的票房,为了展示列表中电影本身的票 ...
- 使用Github第一节
学习Github 1.目的: 借助github托管代码 2.基本概念(1): 仓库(Repository) 仓库用来存放项目代码,每个项目对应一个仓库,多个项目则对应多个仓库 收藏(Start) 收藏 ...
- hdu-2553 N皇后问题(搜索题)
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上. 你的任务是,对于给定的N,求出有多少种合法的放置方法. Inpu ...
- Linux学习-磁盘配额 (Quota) 的应用与实作
什么是 Quota 在 Linux 系统中,由于是多人多任务的环境,所以会有多人共同使用一个硬盘空间的情况发生, 如 果其中有少数几个使用者大量的占掉了硬盘空间的话,那势必压缩其他使用者的使用权力! ...
- Linux数据库忘记密码-修改方法
一.拥有原来的myql的root的密码: 方法一:在mysql系统外,使用mysqladmin# mysqladmin -u root -p password "test123"E ...
- 学习正则有感by魔芋(命名问题)
魔芋: 事实上,我是反感一些特殊的名词.一些名词看上去就让人感觉到抗拒. 关于一个概念用不同的名词来定义,简直是太糟糕了. 举个例子: 匹配一个后面带有exp2的exp1的正则. 写法: exp1(? ...
- ogre3D学习基础6---场景管理器的使用
场景管理器的使用 最常使用的坐标系统空间(同时也是Ogre程序所能提供的)即是世界空间(World).父节点空间(Parent)以及本地空间(Local). 1.世界空间 就是物体所存在的地方,当我们 ...
- 面试中注意3个javascript的问题
JavaScript 是所有现代浏览器的官方语言.因此,各种语言的开发者面试中都会遇到 JavaScript 问题. 本文不讲最新的 JavaScript 库,通用开发实践,或任何新的 ES6 函数. ...