(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)
原文地址:https://www.cnblogs.com/buchizaodian/p/8351622.html