博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# DataTable常用操作总结 (转载)
阅读量:6568 次
发布时间:2019-06-24

本文共 4148 字,大约阅读时间需要 13 分钟。

转载自:

【引言】项目中经常使用DataTable,发现有好多东西,需要整理下.

protected void Page_Load(object sender, EventArgs e){    //①Create a DataTable.创建一个DataTable    DataTable dt = new DataTable("Table_AX");    //②Add columns for DataTable.添加列    //Method 1    dt.Columns.Add("column0", System.Type.GetType("System.String"));    //Method 2    DataColumn dc = new DataColumn("column1", System.Type.GetType("System.Boolean"));    dt.Columns.Add(dc);    //③Add rows for DataTable。添加行    //★Initialize the row    DataRow dr = dt.NewRow();    dr["column0"] = "AX";    dr["column1"] = true;    dt.Rows.Add(dr);    //★Doesn't initialize the row    DataRow dr1 = dt.NewRow();    dt.Rows.Add(dr1);    //④Select row 选择某行    //Search the second row 如果没有赋值,则用is null来select    DataRow[] drs = dt.Select("column1 is null");    DataRow[] drss = dt.Select("column0 = 'AX'");    //⑤Copy DataTable include data 复制DataTable,包括数据    DataTable dtNew = dt.Copy();    //⑥Copy DataTable only scheme 复制DataTable,只有结构    DataTable dtOnlyScheme = dt.Clone();    //⑦Operate one row 行的编辑    //★都是对dt的操作    //Method 1    DataRow drOperate = dt.Rows[0];    drOperate["column0"] = "AXzhz";    drOperate["column1"] = false;    //Method 2    drOperate[0] = "AXzhz";    drOperate[1] = false;    //Method 3    dt.Rows[0]["column0"] = "AXzhz";    dt.Rows[0]["column1"] = false;    //Method 4    dt.Rows[0][0] = "AXzhz";    dt.Rows[0][1] = false;    //⑧Evaluate another DataTable's row to current Datatable 复制另一个DT的行数据到当前DT    dtOnlyScheme.Rows.Add(dt.Rows[0].ItemArray);    //⑨Use Rowstate RowState属性的操作    //■■■■■■■■■■■■■■■■■■■■■■■■■■■■    //不知道怎么才能使Row的State变为DataRowState.Deleted    //More further,怎样设置Row的State    //■■■■■■■■■■■■■■■■■■■■■■■■■■■■    if (dt.Rows[0].RowState == DataRowState.Unchanged)    {        //Your logic    }    //⑩Convert to string 将DT转换成string    System.IO.StringWriter sw = new System.IO.StringWriter();    System.Xml.XmlTextWriter xw = new System.Xml.XmlTextWriter(sw);    dt.WriteXml(xw);    string s = sw.ToString();    //ⅰ.string convert to DataTable【Doesn't achieve it】    //■■■■■■■■■■■■■■■■■■■■■■■■■■■■    //没有把string成功转换为DataTable        ■■已实现,参见追加■■    //■■■■■■■■■■■■■■■■■■■■■■■■■■■■    //DataTable dtConvert = new DataTable();    //System.IO.StringReader stream = new System.IO.StringReader(s);    //System.Xml.XmlReader xtr = new System.Xml.XmlTextReader(stream);    //dtConvert.ReadXml(xtr);    //ⅱ.Filter DataTable    //It's so strange that the second row has been filtered    //the second row show in GridView never    //It means null field will be filter always.    //Filter the all conditions    dt.DefaultView.RowFilter = "column1 <> true";    //dt.DefaultView.RowFilter = "column1 = true";    dt.DefaultView.RowStateFilter = DataViewRowState.Added;    //ⅲ.Sort row    //Stupid method    DataRow[] drsss = dt.Select(String.Empty, "column0 DESC , column1 ASC");    //Clever method    dt.DefaultView.Sort = "column0 , column1 ASC";    //ⅳ.Bind DataTable    //绑定的其实是DefaultView    gvTestDataTable.DataSource = dt;    gvTestDataTable.DataBind();}

【追加】判断一个字符串是否为DataTable的列名

dtInfo.Columns.Contains("AX");

【追加】DataTable与XML的转换

protected void Page_Load(object sender, EventArgs e){    DataTable dt_AX = new DataTable();    //dt_AX.Columns.Add("Sex", typeof(System.Boolean));    //DataRow dr = dt_AX.NewRow();    //dr["Sex"] = true;    //dt_AX.Rows.Add(dr);    string xml = ConvertBetweenDataTableAndXML_AX(dt_AX);    DataTable dt = ConvertBetweenDataTableAndXML_AX(xml);}public string ConvertBetweenDataTableAndXML_AX(DataTable dtNeedCoveret){    System.IO.TextWriter tw = new System.IO.StringWriter();    //if TableName is empty, WriteXml() will throw Exception.    dtNeedCoveret.TableName = dtNeedCoveret.TableName.Length == 0 ? "Table_AX" : dtNeedCoveret.TableName;    dtNeedCoveret.WriteXml(tw);    dtNeedCoveret.WriteXmlSchema(tw);    return tw.ToString();}public DataTable ConvertBetweenDataTableAndXML_AX(string xml){    System.IO.TextReader trDataTable = new System.IO.StringReader(xml.Substring(0, xml.IndexOf("

【追加】排序的好方法

dt.DefaultView.Sort = "ID ,Name ASC";dt = dt.DefaultView.ToTable();

转载自:

转载于:https://www.cnblogs.com/icyJ/archive/2012/11/23/DataTable.html

你可能感兴趣的文章
BZOJ3799 : 字符串重组
查看>>
数据持久化的复习
查看>>
Util应用程序框架公共操作类(八):Lambda表达式公共操作类(二)
查看>>
thinkphp查询
查看>>
iOS开发-Protocol协议及委托代理(Delegate)传值
查看>>
【BZOJ】1105: [POI2007]石头花园SKA
查看>>
MapReduce原理与设计思想
查看>>
Theano学习笔记(三)——图结构
查看>>
UVa - 11400 - Lighting System Design
查看>>
Oracle 11g 客户端使用
查看>>
luvit 被忽视的lua 高性能框架(仿nodejs)
查看>>
也许每个农村出来的码农都有个田园梦
查看>>
J2EE的13种核心技术
查看>>
Express.js 中的 Sessions 如何工作?(译)
查看>>
Web自动化之Headless Chrome概览
查看>>
【133天】尚学堂高淇Java300集视频精华笔记(71-72)
查看>>
剖析 Laravel 计划任务--事件属性
查看>>
Micronaut教程:如何使用基于JVM的框架构建微服务
查看>>
检查IP是否可用的方法
查看>>
互联网架构师必备技术 Docker仓库与Java应用服务动态发布那些事
查看>>