// 构造datatable
DataTable dt = new DataTable("test_table");
dt.Columns.AddRange(new DataColumn[]{
	new DataColumn("name", typeof(string)),
	new DataColumn("sex", typeof(string)),
	new DataColumn("score", typeof(int))
});

dt.Rows.Add(new Object[] {"张三", "男", 1});
dt.Rows.Add(new Object[] {"张三", "男", 4});
dt.Rows.Add(new Object[] {"李四", "男", 100});
dt.Rows.Add(new Object[] {"张三", "女", 90});
dt.Rows.Add(new Object[] {"王五", "女", 77});

Console.WriteLine(dt.Rows[0]["name"]);
Console.WriteLine(dt.Rows[0]["sex"]);
dt.Rows[0]["score"] = 80;
Console.WriteLine(dt.Rows[0]["score"]);

Console.WriteLine(dt.TableName);
Console.WriteLine("test_table has " + dt.Rows.Count + " rows");

// 行内查找
DataRow[] rows = dt.Select("name=" + "'张三'" + "and sex=" + "'男'");
DataTable temp = dt.Clone();
foreach (DataRow row in rows)
{
	Console.WriteLine(row["name"]);
	temp.Rows.Add(row.ItemArray);
}

// 统计
Console.WriteLine(temp.Compute("sum(score)", ""));

Console.WriteLine();

// datatable的copy和clone
DataTable dt2 = dt.Copy();
Console.WriteLine(dt2.Rows.Count);
Console.WriteLine(dt2.Rows[0]["score"]);

DataTable dt3 = dt.Clone();
dt3.Rows.Add(new object[] {"abc", "女", 80});
dt3.Rows.Add(new object[] {"drt", "男", 90});

// 构造新行
DataRow dr = dt3.NewRow();
dr[0] = "jkj";
dr[1] = "女";
dr[2] = 100;
dt3.Rows.Add(dr);
Console.WriteLine(dt3.Rows.Count);

// 写入csv文件
if (File.Exists(dt.TableName + ".csv"))
{
	File.Delete(dt.TableName + ".csv");
}

FileStream fs = new FileStream(dt.TableName + ".csv", FileMode.Create, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs, Encoding.Default);
var data = string.Empty;

for (var i = 0; i < dt.Columns.Count; i++)
{
	data += dt.Columns[i].ColumnName;
	if (i < dt.Columns.Count - 1)
	{
		data += ",";
	}
}

sw.WriteLine(data);

for (var i = 0; i < dt.Rows.Count; i++)
{
	data = string.Empty;

	for (var j = 0; j < dt.Columns.Count; j++)
	{
		data += dt.Rows[i][j].ToString();
		if (j < dt.Columns.Count - 1)
		{
			data += ",";
		}
	}

	sw.WriteLine(data);
}

sw.Close();
fs.Close();

Console.ReadKey();

C#的datatable使用的更多相关文章

  1. DataTable 转换成 Json的3种方法

    在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>.DataTable转换为Json格式.特别在使用Extjs框架的时候,A ...

  2. C#中将DataTable导出为HTML的方法

    今天我要向大家分享一种将DataTable导出为到HTML格式的方法.有时我们需要HTML格式的输出数据, 以下代码就可以帮助我们达到目的,. 首先,我们要绑定DataTable和 DataGridV ...

  3. DataTable转换成IList<T>的简单实现

    DataTable的无奈 很多时候,我们需要去操作DataTable.但DataTable的操作,实在是太不方便了.Linq?lambda表达式?统统没有... 特别是对现有结果集做进一步筛选,这样的 ...

  4. 自用的基于Emit的C#下DataTable转实体类方法

    之前一直在做WebForm的开发,数据绑定时直接DataTable绑定Gridview很方便,但是最近开始往MVC转,数据列表的传递和页面展示基本上是以List为主,像下面这样,遍历实体类的各个字段去 ...

  5. jquery dataTable汉化(插件形式)

    1.jquery dataTable.js 官网:http://datatables.net/ 中文:http://dt.thxopen.com/ 2.汉化提示信息(放到xx.js中,引入即可) 注: ...

  6. DataTable与DTO对象的简易转换类

    在web开发过程中,有时候为了数据传输的方便,比如:后台需要更新前端的ViewModel,此时我们定义一个与前端ViewModel结构一样的DTO对象,从数据层获取数据后,将数据封装成DTO然后序列化 ...

  7. asp.net DataTable导出Excel 自定义列名

    1.添加引用NPOI.dll 2.cs文件头部添加 using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System.IO; 3.代码如 ...

  8. asp.net dataTable转换成Json格式

    /// <summary> /// dataTable转换成Json格式 /// </summary> /// <param name="dt"> ...

  9. DataTable的orderby有关问题

    在网上找了一个在后台重新对DataTable排序的方法(之所以不在数据库是因为我生成的是报表,写了存储过程用的表变量,order by也要用变量,死活拼不起来,sql能力没过关,动态sql也试了) s ...

  10. 关于c#在DataTable中根据条件删除某一行

    我们经常会将数据源放在DataTable里面,但是有时候也需要移除不想要的行,下面的代码告诉你们 DataTable dts:                DataRow[] foundRow;   ...

随机推荐

  1. 我为什么要翻译ES6官方文档

    ES6出来很久了,现在网上也有很多教程,其中以阮一峰老师的教程最为经典.大家通过学习阮老师的教程肯定能学懂ES6最新的技术. ES6官方文档是一个规范,各浏览器在实现ES6的具体API时都会遵循它.我 ...

  2. 编写高质量代码改善C#程序的157个建议——建议92:谨慎将数组或集合作为属性

    建议92:谨慎将数组或集合作为属性 数组或集合作为属性会引起这样一个问题:如果属性是只读的,我们通常会认为它是不可用改变的,但如果将只读属性应用于数座或集合,而元素的内容和数量却仍旧可以随意改变.如下 ...

  3. APUE(3)---文件I/O (3)

    十二.函数sync.fsync和fdatasync 延迟写:传统的Unix系统在内核中设有缓冲区或页高速缓冲,大多数磁盘I/O都通过缓冲区进行,当我们向文件写入数据时,内核通常先将数据复制到缓冲区,然 ...

  4. Java内存模型(转载)

    本文章节: 1.JMM简介 2.堆和栈 3.本机内存 4.防止内存泄漏 1.JMM简介 i.内存模型概述 Java平台自动集成了线程以及多处理器技术,这种集成程度比Java以前诞生的计算机语言要厉害很 ...

  5. Sweetkang 的机器学习实验室 (1)

    前言 近年来,Machine Learning 在许多领域上已然取得了可喜的成就,非常火热.就我个人来讲,有意将业余 Sport Programming 的范围扩展一下,譬如 Topcoder Mar ...

  6. speedbutton用法

  7. 利用 StartLoadingStatus 和 FinishLoadingStatus 读取数据特别是大数据时增加渐隐渐显等待特效 - Ehlib学习(三)

    代码很简单: DBGrideh.StartLoadingStatus(' Loading ... '); Sleep(500); DBGrideh.FinishLoadingStatus; 做下变动: ...

  8. 这些混账的开源库在煞笔Windows系统上的编译方法

    母语不就是用来吐槽的么!!!!!说母语我不骂人难道还用英语么!!!!!!!!!! 说什么什么开源库好的狗日的,尼玛有种先搞定编译啊卧槽!!!!!!!!! 是的!!!!!你可以吐槽老子智商低用弱智煞笔W ...

  9. 使用docker部署java项目

    在接触了docker后,干什么都想用docker来弄.最近刚做完毕业设计,本来是说将项目简单在本地部署就行了,结果老师说如果部署在服务器的话有加加分,于是果断用docker来搞,多加点分. java项 ...

  10. Binder学习笔记(一)

    网上看了很多关于binder的文章,但我还是想把自己的心路历程记录下来,有些是跟着别人的脚步领略险峻风景,有些则是自己只身探入代码深处打捞出的收获.我不确定是否全部融会贯通,更担心一两个月后会完全不记 ...