C#DataTable一些使用方法

C#DataTable一些使用方法

  1,使用DataTable必须要引用System.Data.

2,定义一个DataTable

DataTable dt=new DataTable();

 3,为DataTable创建列

//1.创建空列
DataColumn dc = new DataColumn();
dt.Columns.Add(dc);
//2.创建带列名和类型名的列
dt.Columns.Add("column0", typeof(String));
//3.通过列架构添加列
DataColumn dc = new DataColumn("column1", typeof(String));
dt.Columns.Add(dc);

 4,为DataTable创建行

//1.创建空行
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
//2.创建空行
dt.Rows.Add();
//3.通过行框架创建并赋值
dt.Rows.Add("小明",18);//Add里面参数的数据顺序要和dt中的列的顺序对应
//4.通过复制dt2表的某一行来创建
dt.Rows.Add(dt2.Rows[i].ItemArray);

 5,DataTable的取值和赋值

//新建行的赋值
DataRow dr = dt.NewRow();
dr[0] = "小明";//通过索引赋值
dr["column1"] = DateTime.Now; //通过名称赋值
//对表已有行进行赋值
dt.Rows[0][0] = "小明"; //通过索引赋值
dt.Rows[0]["column1"] = DateTime.Now;//通过名称赋值
//取值
string name=dt.Rows[0][0].ToString();
string time=dt.Rows[0]["column1"].ToString();

 6,DataTable的筛选行和删除行

//select用法//筛选姓名列值中有"小"的行的集合(模糊查询),第二句可添加按年龄降序排序
DataRow[] dr = dt.Select("姓名 like ‘小%‘");
DataRow[] drs = dt.Select("姓名 like ‘小%‘", "年龄 DESC");

 //Compute用法

Object result = dt.Compute("sum(成绩)", "年龄>16 and 姓名 like ‘小*‘");

//result为计算出的结果,compute函数的第一个参数一般为聚合函数,后一个参数为筛选条件

//Find用法

dt.PrimaryKey = new DataColumn[] { dt.Columns["学号"] };

DataRow dr1 = dt.Rows.Find("004");

//Find用法要求datatable有主键,是一种按主键搜寻一行数据的方法

//删除行

 //使用DataTable.Rows.Remove(DataRow)方法

 dt.Rows.Remove(dt.Rows[0]);

 //使用DataTable.Rows.RemoveAt(index)方法

 dt.Rows.RemoveAt(0);

 //使用DataRow.Delete()方法

 dt.Row[0].Delete();

 dt.AcceptChanges();

 //-----区别和注意点-----

 //Remove()和RemoveAt()方法是直接删除

 //Delete()方法只是将该行标记为deleted,但是还存在,还可DataTable.RejectChanges()回滚,使该行取消删除。

 //用Rows.Count来获取行数时,还是删除之前的行数,需要使用DataTable.AcceptChanges()方法来提交修改。

 //如果要删除DataTable中的多行,应该采用倒序循环DataTable.Rows,而且不能用foreach进行循环删除,因为正序删除时索引会发生变化,程式发生异常,很难预料后果。

 for (int i = dt.Rows.Count - 1; i >= 0; i--)

 {

  dt.Rows.RemoveAt(i);

 }

 7,DataTable的复制和排序

//复制表,同时复制了表结构和表中的数据
DataTable dtNew = new DataTable();
dtNew = dt.Copy();

//克隆表,只是复制了表结构,不包括数据
DataTable dtNew = new DataTable();
dtNew = dt.Clone();

//排序
DataView dv = dt.DefaultView;//获取表视图
dv.Sort = "ID DESC";//按照ID倒序排序
dv.ToTable();//转为表

  

 

原文地址:https://www.cnblogs.com/lovejingjing/p/9304150.html

时间: 2024-10-08 16:31:11

C#DataTable一些使用方法的相关文章

C# CreateDataAdapter 创建 DbDataAdapter,以及用DataTable的Load方法获取数据

ADO.NET中 有了DbConnection,就可用DbConnection的CreateCommand 创建DbCommand,BeginTransaction创建DbTransaction 可以十分方便的实现工厂模式,操作不同的数据库. 但是唯独DbDataAdapter这个重要的对象无法通过DbConnection或DbCommand来创建,也无法实例化,必须使用SqlDataReader这种明确的类来创建实例,导致 获取数据 的方法不能在基类实现 以下是两个解决办法: 1.只有我们自己

C# Datatable导出Excel方法

C# 导出Excel方法  先引用下System.IO;System.data; 具体函数如下: 1 public static bool ExportCSV(DataTable dt, string fileNmae) 2 { 3 bool Msg = false; 4 string con = ""; 5 foreach (DataColumn dc in dt.Columns) 6 { 7 con += dc.ColumnName + ","; 8 } 9 c

C# DataTable的Select()方法不支持 != 判断

异常描述: 用户代码未处理 System.Data.SyntaxErrorExceptionHResult=-2146232032Message=无法解释位置 23 的标记“!”.Source=System.DataStackTrace:在 System.Data.ExpressionParser.Scan()在 System.Data.ExpressionParser.Parse()在 System.Data.DataExpression..ctor(DataTable table, Stri

DataTable 使用Select方法查询并排序,以及【拼接转义符的问题】

关于DataTable 里面用 /转义符拼接的问题 //这种写法表面上是正确,实现上在运行时调用Select方法实行查询会报错 string str = resetstrWhere + "\"" + "," + "\"" + dataQuery.DefaultOrderByClause; table = table.Select(str).CopyToDataTable(); //这种写法表面上是正确,实现上在运行时调用Sel

C#中datatable去重的方法

这篇文章主要介绍了C#中datatable去重的方法,通过两种不同的方法对比分析了datatable去重的技巧,非常具有实用价值,需要的朋友可以参考下 这里主要介绍两种方法: 1  数据库直接去除重复 select  distinct * from 表名 2 对 DataTable直接进行操作 DataTable dt=db.GetDt("select * from 表名");//获得datatable DataView dv = new DataView(dt);//虚拟视图吧,我这

C#中DataTable删除行的方法分析

本文实例讲述了C#中DataTable删除行的方法,分享给大家供大家参考之用.具体实现方法如下: 自己的删除例子(drTemp是表,gvSummary是dev 的gridview.单击右键点击grid删除): 1.dtTemp.Rows.RemoveAt(gvSummary.FocusedRowHandle); 2.dtTemp.Rows[gvSummary.FocusedRowHandle].Delete();  dtTemp.AcceptChanges(); 在C#中,如果要删除DataTa

C#DataTable 使用GroupBy方法的lamda 表达式和Linq语句写法

https://www.cnblogs.com/johnblogs/p/6006867.html DataTable ds = new DataTable(); //1.lamda 表达式写法(推荐) var result = ds.AsEnumerable().GroupBy(s => new{Year = s.Field<int>("Year"), Month = s.Field<int>("Month"), Day = s.Fie

c# 之DataTable的扩展方法

由于太懒了,很久没更新了.毕业了,得好好装逼学习了,不能一心想着完了. 由于公司中的项目大量的使用DataTable,而每次对datatable进行操作的时候需要写很多相同的代码,所以秉着 装逼而学习 的态度,于是撸了几个扩展方法,记录下来,学习下.     class Program     {         public DataTable LinqTable = new DataTable();         void AddNewRow(int id, string name)   

DataTable添加行的方法

方法一: DataTable  tblDatas = new DataTable("Datas");DataColumn dc = null;dc = tblDatas.Columns.Add("ID", Type.GetType("System.Int32"));dc.AutoIncrement = true;//自动增加dc.AutoIncrementSeed = 1;//起始为1dc.AutoIncrementStep = 1;//步长为1