• C#中DataTable使用技巧


    在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结。

    一、DataTable简介

    (1)构造函数

    Ø         DataTable()不带参数初始化DataTable类的新实例。

    Ø         DataTable(stringtableName)用指定的表名初始化DataTable类的新实例。

    Ø         DataTable(stringtableName,stringtableNamespace)用指定的表名和命名空间初始化DataTable类的新实例。

    (2)常用属性

    Ø         CaseSensitive指示表中的字符串比较是否区分大小写。

    Ø         ChildRelations获取此DataTable的子关系的集合。

    Ø         Columns获取属于该表的列的集合。

    Ø         Constraints获取由该表维护的约束的集合。

    Ø         DataSet获取此表所属的DataSet。DataSet相关信息,可见我以前的一篇文章《数据访问(2)-DataSet》

    Ø         DefaultView获取可能包括筛选视图或游标位置的表的自定义视图。

    Ø         HasErrors获取一个值,该值指示该表所属的DataSet的任何表的任何行中是否有错误。

    Ø         MinimumCapacity获取或设置该表最初的起始大小。该表中行的最初起始大小。默认值为50。

    Ø         Rows获取属于该表的行的集合。

    Ø         TableName获取或设置DataTable的名称。

     (3)常用方法

    Ø         AcceptChanges()提交自上次调用AcceptChanges()以来对该表进行的所有更改。

    Ø         BeginInit()开始初始化在窗体上使用或由另一个组件使用的DataTable。初始化发生在运行时。

    Ø         Clear()清除所有数据的DataTable。

    Ø         Clone()克隆DataTable的结构,包括所有DataTable架构和约束。

    Ø         EndInit()结束在窗体上使用或由另一个组件使用的DataTable的初始化。初始化发生在运行时。

    Ø         ImportRow(DataRowrow)将DataRow复制到DataTable中,保留任何属性设置以及初始值和当前值。

    Ø         Merge(DataTabletable)将指定的DataTable与当前的DataTable合并。

    Ø         NewRow()创建与该表具有相同架构的新DataRow。

    二、DataTable使用技巧

    (1)CreateaDataTable

    DataTabledt=newDataTable("Table_AX");

    (2)AddcolumnsforDataTable

    //Method1

    dt.Columns.Add("column0",System.Type.GetType("System.String"));

    //Method2

    DataColumndc=newDataColumn("column1",System.Type.GetType("System.Boolean"));

    dt.Columns.Add(dc);

    (3)AddrowsforDataTable

    //Initializetherow

    DataRowdr=dt.NewRow();

    dr["column0"]="AX";

    dr["column1"]=true;

    dt.Rows.Add(dr);

    //Doesn'tinitializetherow

    DataRowdr1=dt.NewRow();

    dt.Rows.Add(dr1);

    (4)Selectrow

    //Searchthesecondrow如果没有赋值,则用isnull来select

    DataRow[]drs=dt.Select("column1isnull");

    DataRow[]drss=dt.Select("column0='AX'");

    (5)CopyDataTableincludedata

    DataTabledtNew=dt.Copy();

    (6)CopyDataTableonlyscheme

    DataTabledtOnlyScheme=dt.Clone();

    (7)Operateonerow

    //对dt的操作

    //Method1

    DataRowdrOperate=dt.Rows[0];

    drOperate["column0"]="AXzhz";

    drOperate["column1"]=false;

    //Method2

    drOperate[0]="AXzhz";

    drOperate[1]=false;

    //Method3

    dt.Rows[0]["column0"]="AXzhz";

    dt.Rows[0]["column1"]=false;

    //Method4

    dt.Rows[0][0]="AXzhz";

    dt.Rows[0][1]=false;

    (8)EvaluateanotherDataTable'srowtocurrentDatatable

    dtOnlyScheme.Rows.Add(dt.Rows[0].ItemArray);

    (9)Converttostring

    System.IO.StringWritersw=newSystem.IO.StringWriter();

    System.Xml.XmlTextWriterxw=newSystem.Xml.XmlTextWriter(sw);

    dt.WriteXml(xw);

    strings=sw.ToString();

    (10)FilterDataTable

    dt.DefaultView.RowFilter="column1<>true";

    dt.DefaultView.RowFilter="column1=true";

    (11)Sortrow

    dt.DefaultView.Sort="ID,NameASC";

    dt=dt.DefaultView.ToTable();

    (12)BindDataTable

    //绑定的其实是DefaultView

    gvTestDataTable.DataSource=dt;

    gvTestDataTable.DataBind();

    (13)judgetheDataTable’sColumnnameisastring

    //判断一个字符串是否为DataTable的列名

    dtInfo.Columns.Contains("AX");

    (14)DataTableconverttoXMLandXMLconverttoDataTable

    protectedvoidPage_Load(objectsender,EventArgse)

    DataTabledt_AX=newDataTable();

    //dt_AX.Columns.Add("Sex",typeof(System.Boolean));

    //DataRowdr=dt_AX.NewRow();

    //dr["Sex"]=true;

    //dt_AX.Rows.Add(dr);

    stringxml=ConvertBetweenDataTableAndXML_AX(dt_AX);

    DataTabledt=ConvertBetweenDataTableAndXML_AX(xml);

    }

    publicstringConvertBetweenDataTableAndXML_AX(DataTabledtNeedCoveret)

    {

    System.IO.TextWritertw=newSystem.IO.StringWriter();

    //ifTableNameisempty,WriteXml()willthrowException.

    dtNeedCoveret.TableName=dtNeedCoveret.TableName.Length==0?"Table_AX":dtNeedCoveret.TableName;

    dtNeedCoveret.WriteXml(tw);

    dtNeedCoveret.WriteXmlSchema(tw);

    returntw.ToString();

    }

    publicDataTableConvertBetweenDataTableAndXML_AX(stringxml)

    {

    System.IO.TextReadertrDataTable=newSystem.IO.StringReader(xml.Substring(0,xml.IndexOf("<?xml")));

    System.IO.TextReadertrSchema=newSystem.IO.StringReader(xml.Substring(xml.IndexOf("<?xml")));

    DataTabledtReturn=newDataTable();

    dtReturn.ReadXmlSchema(trSchema);

    dtReturn.ReadXml(trDataTable);

    returndtReturn;

    }

  • 相关阅读:
    2022.2.10学习日志
    2022.2.4学习日志
    【分享】MPSoC以太网hash包过滤模式
    解决给Ubuntu 18.04安装软件时的“unmet dependencies”问题
    ubuntu国内源
    编译FFMpeg n4.2.5,OpenCV 4.5.4后,编译Pangolin v0.6成功。
    Ubuntu 18.04下做点云开发安装的相关软件包
    【分享】使用Xilinx PetaLinux ARM64 SDK,交叉编译第三方软件
    使用rdfind删除重复文件
    为ubuntu 18.04的VNC运行轻量级桌面xfce
  • 原文地址:https://www.cnblogs.com/CharlesGrant/p/3650880.html
Copyright © 2020-2023  润新知