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

本文共 4081 字,大约阅读时间需要 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();

转载自:

你可能感兴趣的文章
人生=亲情+爱情+金钱+理想+友情?
查看>>
VUE devtools 调试工具安装 让vue飞起来
查看>>
LNMP之memcached实现tomcat群集(三)
查看>>
我的友情链接
查看>>
Android IPC进程间通讯机制
查看>>
无损音乐资源
查看>>
对SpringAop的思考之基于cglib的动态代理
查看>>
Linux5.3双网卡绑定虚拟成一块网卡
查看>>
轻松获取格林尼治Linux时间戳
查看>>
java 执行cmd、shell 、exe 返回结果
查看>>
linux之iptables详解及配置(一)
查看>>
struts2 通过action返回json
查看>>
DHCP
查看>>
python 中的if __name__ == 'main':
查看>>
各网站平台API接口整理
查看>>
以修改字体为例谈Android的listView开发优化
查看>>
addLoadEvent(func) 不管在页面加载完毕执行多少个函数,都应付自如
查看>>
我的友情链接
查看>>
Motion Builder 2016时间控制区的学习
查看>>
NoSQL——MongoDB基础
查看>>