C#DataTable操作

Posted 金桂花季

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#DataTable操作相关的知识,希望对你有一定的参考价值。

技术分享
1】 在DataSet中添加DataTable

     DataSet.Tables.Add(DataTable) 

实例:

    DataSet ds=new DataSet();

    DataTable table=new DataTable("学生表");

    ds.Tables.Add(table);
2】从DataSet中读出DataTable

     DataTable=DataSet.Tables[0]或DataSet.Tables["表名"] 

实例:

    DataTable table=ds[i]或DataTable table=ds["学生表"]

    //i为DataSet中的索引值,因为DataSet可存放多个DataTable,可以根据索引值来找DataTable或直接写DataTable的名称来找DataTable
3】添加行
     DataTable t=new DataTable();
     DataRow r=t.NewRow();
     r["列名"]=列值;
     t.Rows.Add(r) ;

实例:

    DataTable:学生表

    id    name

    1    xun

代码:

    DataTable t=new DataTable("学生表");

    DataRow r=t.NewRow();

    r["id"]=2;

    r["name"]=xun2;

    t.Rows.Add(r);

4】添加列

     DataTable.Columns.Add("列名",Type.GetType("数据类型"))  ;
5】从行中读列值

     DataRow["列名"]或DataRow[DataColumn];  
6】从DataTable中读列值

    DataTable table;

    a、table.Rows[i]["列名"]

    b、table.Rows[i][i]

    c、table[i].列名(列名不加引号)

7】读出特定的行

    DataTable table;

    DataRow[] selectRow=table.Select("列名=‘"+存放特定的变量.ToString()+"");

    选择其中的一行:selectRow[索引]
一、DataSet、DataTable、DataRow、DataColumn
技术分享
删除DataTable中的行要注意索引问题,一般有两种方法:
1】用for循环时,注意计数器初始值为表长,自减循环。DataTable.Rows.RemoveAt(i)就要注意。
2】用DataTable的Select方法,注意该方法的参数是字符串筛选器
3】Delete()之后需要datatable.AccepteChanges()方法确认完全删除,因为Delete()只是将相应列的状态标志为删除,还可以通过datatable.RejectChanges()回滚,使该行取消删除。若要删除多行,可以连续用Delete(),然后采用AccepteChanges()方法确认删除。
二、删除DataTable中的行三种方法:(DataTable.Rows.Remove(DataRow dr)、DataTable.Rows.RemoveAt(i)、DataRow.Delete())
技术分享
DataTable dt = table.DefaultView.ToTable();  //文件数据
                            DataTable sorceDt = sorceDt = dateDs2.Tables[0];  //数据库数据
                            DataTable except = table.Clone();  //差集

                            //求差集数据
                            foreach (DataRow dr in dt.Rows)
                            {
                                DataRow[] dtemp = sorceDt.Select("DonationBarCode=‘" + dr["DonationBarCode"] + "‘ And StartTime=‘" + dr["StartTime"] + "");
                                if (dtemp.Length == 0)
                                {
                                    DataRow dr2 = except.NewRow();
                                    dr2 = dr;
                                    except.Rows.Add(dr2.ItemArray);
                                }
                            }
三、求两个datatable的差集

 

以上是关于C#DataTable操作的主要内容,如果未能解决你的问题,请参考以下文章

如何有条件地将 C 代码片段编译到我的 Perl 模块?

C#15条线程遍历同一个DataTable,在线等

[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础

从两个通过 LINQ 连接的 DataTable 创建组合的 DataTable。 C#

给datatable赋值(c#,.net)

c#如何从DataTable构建自定义DataView?