1、对表的初始化
      //创建表
DataTable table = new DataTable();
//添加列
table.Columns.Add("ID", typeof(Int32));
table.Columns.Add("Name", typeof(String));
table.Columns.Add("Age", typeof(Int32));
table.Columns.Add("CreateTime", typeof(DateTime));
//添加行和数据
table.Rows.Add(new object[] { , "张三", , DateTime.Now });
table.Rows.Add(new object[] { , "李四", , DateTime.Now });
table.Rows.Add(new object[] { , "王五", , DateTime.Now });

 2、添加列的一种方式

         DataColumn column;
// Create new DataColumn, set DataType,
// ColumnName and add to DataTable.
column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "id";
column.ReadOnly = true;
column.Unique = true;
// Add the Column to the DataColumnCollection.
table.Columns.Add(column);

 3、 DataViewRowState.Added 与 Datatable.AcceptChanges() 的一点关系

先上一段MSDN的实例代码

Select(String, String, DataViewRowState)

  static void Main(string[] args)
{
try
{
DataTable customerTable = new DataTable("Customers");
// Add columns
customerTable.Columns.Add("id", typeof(int));
customerTable.Columns.Add("name", typeof(string)); // Set PrimaryKey
customerTable.Columns["id"].Unique = true;
customerTable.PrimaryKey = new DataColumn[]
{ customerTable.Columns["id"] }; // Add ten rows
for (int id = ; id <= ; id++)
{
customerTable.Rows.Add(
new object[] { id, string.Format("customer{0}", id) });
}
//customerTable.AcceptChanges(); // Add another ten rows
for (int id = ; id <= ; id++)
{
customerTable.Rows.Add(
new object[] { id, string.Format("customer{0}", id) });
}
customerTable.AcceptChanges(); string expression;
string sortOrder; expression = "id > 5";
// Sort descending by column named CompanyName.
sortOrder = "name DESC";
// Use the Select method to find all rows matching the filter.
DataRow[] foundRows =
customerTable.Select(expression, sortOrder,
DataViewRowState.Added); PrintRows(foundRows, "filtered rows"); foundRows = customerTable.Select();
PrintRows(foundRows, "all rows"); Console.WriteLine("OK");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
} Console.ReadKey();
}
private static void PrintRows(DataRow[] rows, string label)
{
Console.WriteLine("\n{0}", label);
if (rows.Length <= )
{
Console.WriteLine("no rows found");
return;
}
foreach (DataRow row in rows)
{
foreach (DataColumn column in row.Table.Columns)
{
Console.Write("\t table {0}", row[column]);
}
Console.WriteLine();
}
}

 当使用 AcceptChanges 方法后,之前对datatable的 Added、Modified、Unchanged、Deleted 都会被提交。比如下面这一行中 select 将检测不到 AcceptChanges之前的对表的增加。

 DataRow[] foundRows =customerTable.Select(expression, sortOrder,DataViewRowState.Added);

DataTable 相关的更多相关文章

  1. DataTable相关操作,筛选,取前N条数据,获取指定列数据

    DataTable相关操作,筛选,取前N条数据,获取指定列数据2013-03-12 14:50 by Miracle520, 2667 阅读, 0 评论, 收藏, 编辑 1 #region DataT ...

  2. DataTable相关操作,筛选,取前N条数据,去重复行,获取指定列数据

    #region DataTable筛选,排序返回符合条件行组成的新DataTable或直接用DefaultView按条件返回      /// <summary>      /// Dat ...

  3. DataTable相关

    设置主键列:  this.tableTestData.PrimaryKey = new DataColumn[] { this.tableTestData.Columns[0] };

  4. [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类

    [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类 本节导读:本节主要介绍通过序列 ...

  5. c#结构体、打他table、excel、csv互转

    1.csv相关 public static class CsvHelper { /// <summary> /// 根据csv路径获取datatable /// </summary& ...

  6. horizon源码分析(二)

    源码版本:H版 一.简要回顾 对于请求: 地址:/dashboard/admin/instances/ 方式:POST 参数: instances_filter_q: action:instances ...

  7. C# LIstbox 解决WinForm下ListBox控件“设置DataSource属性后无法修改项集合”的问题

    解决WinForm下ListBox控件“设置DataSource属性后无法修改项集合”的问题 分类: winform2008-05-24 02:33 2592人阅读 评论(11) 收藏 举报 winf ...

  8. 解决WinForm下ListBox控件“设置DataSource属性后无法修改项集合”

    解决WinForm下ListBox控件“设置DataSource属性后无法修改项集合” 最近更新: 2013-2-15    587   很少写WinForm程序第一次使用ListBox控件就遇到了比 ...

  9. 嵌入式单片机STM32应用技术(课本)

    目录SAIU R20 1 6 第1页第1 章. 初识STM32..................................................................... ...

随机推荐

  1. 解析crash

    命令行 1.查找 symbolicatecrash find /Applications/Xcode.app -name symbolicatecrash -type f 2.此时会出现一个路径 sy ...

  2. windows10 powershell上切换至cmd

    前言 在windows10 上是遇到了坑,因为出现了这样的情况!不要说什么盗版,公司买的正版呢. 上图是powershell,下图是 cmd,然后我同样使用powershell 与 cmd,查询nod ...

  3. 从零开始のcocos2dx生活(六)EventDispatcher

    EventDispatcher可能是所有的里面比较不容易理解也不容易看的 我说自己的理解可能会误导到你们-[索了你们看不下去>< 我写了几乎所有的代码的注释,有的是废话跳过就好 主要的代码 ...

  4. .NetCoreApi容器与MySql容器互联

    构建Mysql容器 1.拉取mysql镜像 docker pull mysql/mysql-server 2.创建mysql镜像 docker run -d -p 3306:3306 -e MYSQL ...

  5. java基础之----非空判断

    大家好,第一次写博客,一直想写博客,用于自我总结,也用于帮助新同学成长. 平常我们开发的时候,用到很多非空判断,但是很多同学用到的地方不是很准确,这里,我把自己平时遇到的坑跟大家说说.我废话不多,只想 ...

  6. Go数组和切片你不知道的区别

    开篇语 数组和切片是两种不同的数据结构,比较常见,在Go语言中同时存在,今天我们就一起来看看他们在使用方式上,原理上的一些区别? 数组 在Go语言中,数组是一种具有相同类型固定大小的一种数据结构. 我 ...

  7. zabbix监控web应用日志报警并发送消息到钉钉

    首先在钉钉上开启钉钉机器人功能 说明:自定义关键词是zabbix发送过来的消息内容必须含有你定义的ERROR或者error字段,否则消息无法发送过来 ip地址段:一般都是zabbix-server的I ...

  8. elk日志使用

    elasticsearch +log4net.ElasticSearch+kibana(windows) 需要的东西(目前用的5.6版本) 1.先安装jdk和jre 配置java环境       2. ...

  9. CentOS7设置静态IP以及windows下ping不通虚拟机、虚拟机ping不通外网解决方案

    问题:CentOS7安装完成后默认使用的是动态IP,当你每次重新启动CentOS7后,它的IP地址都不一样.一般我们都是使用远程连接工具连接CentOS7进行操作,如果每次IP都不一样,系统启动后,每 ...

  10. centos7 安装jdk8和maven3

    centos7 安装jdk8和maven3 标签(空格分隔): java,linux jdk 第一种安装: yum install java-1.8.0-openjdk /usr/lib/jvm/ 默 ...