// 构造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. java免费空间!最简单的openshift免费空间上传代码教程!和FTP一样简单!

    史上最简单的openshift免费空间上传代码教程!没有之一! 最近因为想弄一个免费的空间,而且最好是Java的空间,找了一大片,jsp的空间少不说,免费的更是寥寥无几. 找了一大推垃圾空间,终于让我 ...

  2. [GO]用go语言实现区块链工作原理

    基本原理这里就不写了,只写一个简单demo的实现 首先得有一个区块用来存储区块头和区块体 type Block struct { Version int64 PreBlockHash []byte H ...

  3. Android canvas bug

    安卓4.1.1-4.1.2的webkit在渲染canvas元素时有bug. 具体表现是出现重影,即canvas的clearRect()方法不能彻底清空画布,仍然保留之前某个状态当“背景”. 目前的修复 ...

  4. 浅谈Oracle12c 数据库、用户、CDB与PDB之间的关系

    名词介绍: 数据库:数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生 于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以 后,数据管理不再仅仅是存储和管理 ...

  5. 说说jmap命令

    jmap命令 ps -ef| grep java root 1426 1359 0 10:30 pts/0 00:00:00 grep java root 7807 1 0 Apr28 ? 00:22 ...

  6. 阿里云云主机添加swap分区与swap性能优化

    1.swap的功能与相应内核参数 Linux 将物理内存分为内存段的部分被称作“页面”.交换是指内存页面被复制到预先设定好的硬盘空间(叫做交换空间)的过程,目的是释放用于页面的内存.物理内存和交换空间 ...

  7. Android-ContentProvider流程

    Android-ContentProvider原理及流程 Android为什么设计出一个ContentProvider ? 答:ContentProvider的出现主要是暴露数据出去,暴露什么数据呢 ...

  8. MIPS rev.1 指令参数

    由于MIPS各个版本之间的操作数会变,如果出现无法识别的情况 需要根据官方的MIPS instruction手册逐条核对,此处的版本为Rev.1 //******MIPS-55*********// ...

  9. MySQL数据库(四)

    操作数据库表的内容: -- 向表中插入数据:insert into table_name values(now(),'a'); insert into student (id,name,sex) va ...

  10. django fileup-load

    文件上传 使用form表单类的上传 forms.py from django import forms class UploadFileForm(forms.Form): title = forms. ...