C#中DataTable的一些常用操作

1protected void Page_Load(object sender, EventArgs e) 2 { 3 //①Create a DataTable 4 DataTable dt = new DataTable("Table_AX"); 5 6 //②Add columns for DataTable 7 //Method 1 8 dt.Columns.Add("column0", System.Type.GetType("System.String")); 9 //Method 2 10 DataColumn dc = new DataColumn("column1", System.Type.GetType("System.Boolean")); 11 dt.Columns.Add(dc); 12 13 //③Add rows for DataTable 14 //★Initialize the row 15 DataRow dr = dt.NewRow(); 16 dr["column0"] = "AX"; 17 dr["column1"] = true; 18 dt.Rows.Add(dr); 19 //★Doesn't initialize the row 20 DataRow dr1 = dt.NewRow(); 21 dt.Rows.Add(dr1); 22 23 //④Select row 24 //Search the second row 如果没有赋值,则用is null来select 25 DataRow[] drs = dt.Select("column1 is null"); 26 DataRow[] drss = dt.Select("column0 = 'AX'"); 27 28 29 //⑤Copy DataTable include data 30 DataTable dtNew = dt.Copy(); 31 32 //⑥Copy DataTable only scheme 33 DataTable dtOnlyScheme = dt.Clone(); 34 35 //⑦Operate one row 36 //★都是对dt的操作 37 //Method 1 38 DataRow drOperate = dt.Rows[0]; 39 drOperate["column0"] = "AXzhz"; 40 drOperate["column1"] = false; 41 //Method 2 42 drOperate[0] = "AXzhz"; 43 drOperate[1] = false; 44 //Method 3 45 dt.Rows[0]["column0"] = "AXzhz"; 46 dt.Rows[0]["column1"] = false; 47 //Method 4 48 dt.Rows[0][0] = "AXzhz"; 49 dt.Rows[0][1] = false; 50 51 //⑧Evaluate another DataTable's row to current Datatable 52 dtOnlyScheme.Rows.Add(dt.Rows[0].ItemArray); 53 54 //⑨Use Rowstate 55 //■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 56 //不知道怎么才能使Row的State变为DataRowState.Deleted 57 //More further,怎样设置Row的State 58 //■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 59 if (dt.Rows[0].RowState == DataRowState.Unchanged) 60 { 61 //Your logic 62 } 63 64 //⑩Convert to string 65 System.IO.StringWriter sw = new System.IO.StringWriter(); 66 System.Xml.XmlTextWriter xw = new System.Xml.XmlTextWriter(sw); 67 dt.WriteXml(xw); 68 string s = sw.ToString(); 69 70 //ⅰ.string convert to DataTable【Doesn't achieve it】 71 //■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 72 //没有把string成功转换为DataTable ■■已实现,参见追加■■ 73 //■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 74 //DataTable dtConvert = new DataTable(); 75 //System.IO.StringReader stream = new System.IO.StringReader(s); 76 //System.Xml.XmlReader xtr = new System.Xml.XmlTextReader(stream); 77 //dtConvert.ReadXml(xtr); 78 79 //ⅱ.Filter DataTable 80 //It's so strange that the second row has been filtered 81 //the second row show in GridView never 82 //It means null field will be filter always. 83 //Filter the all conditions 84 dt.DefaultView.RowFilter = "column1 <> true"; 85 //dt.DefaultView.RowFilter = "column1 = true"; 86 87 dt.DefaultView.RowStateFilter = DataViewRowState.Added; 88 89 //ⅲ.Sort row 90 //Stupid method 91 DataRow[] drsss = dt.Select(String.Empty, "column0 DESC , column1 ASC"); 92 //Clever method 93 dt.DefaultView.Sort = "column0 , column1 ASC"; 94 95 //ⅳ.Bind DataTable 96 //绑定的其实是DefaultView 97 gvTestDataTable.DataSource = dt; 98 gvTestDataTable.DataBind(); 99 } 100 101 //【追加】判断一个字符串是否为DataTable的列名 102 dtInfo.Columns.Contains("AX"); 103 //【追加】DataTable与XML的转换 104 protected void Page_Load(object sender, EventArgs e) 105 { 106 DataTable dt_AX = new DataTable(); 107 108 //dt_AX.Columns.Add("Sex", typeof(System.Boolean)); 109 //DataRow dr = dt_AX.NewRow(); 110 //dr["Sex"] = true; 111 //dt_AX.Rows.Add(dr); 112 113 string xml=ConvertBetweenDataTableAndXML_AX(dt_AX); 114 DataTable dt = ConvertBetweenDataTableAndXML_AX(xml); 115 } 116 117 public string ConvertBetweenDataTableAndXML_AX(DataTable dtNeedCoveret) 118 { 119 System.IO.TextWriter tw = new System.IO.StringWriter(); 120 //if TableName is empty, WriteXml() will throw Exception. 121 dtNeedCoveret.TableName=dtNeedCoveret.TableName.Length==0?"Table_AX":dtNeedCoveret.TableName; 122 dtNeedCoveret.WriteXml(tw); 123 dtNeedCoveret.WriteXmlSchema(tw); 124 return tw.ToString(); 125 } 126 127 public DataTable ConvertBetweenDataTableAndXML_AX(string xml) 128 { 129 System.IO.TextReader trDataTable = new System.IO.StringReader(xml.Substring(0, xml.IndexOf("<?xml"))); 130 System.IO.TextReader trSchema = new System.IO.StringReader(xml.Substring(xml.IndexOf("<?xml"))); 131 DataTable dtReturn = new DataTable(); 132 dtReturn.ReadXmlSchema(trSchema); 133 dtReturn.ReadXml(trDataTable); 134 return dtReturn; 135 } 136 //【追加】排序的好方法 137 dt.DefaultView.Sort = "ID ,Name ASC"; 138 dt=dt.DefaultView.ToTable();
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

GitHub 上有哪些适合新手跟进的优质项目?

!(https://oscimg.oschina.net/oscnet/011f28e3bc332010e1442e6c00ed344805d.jpg)点击上方“迈微电子研发社”,选择“星标★”公众号重磅干货,第一时间送达!(https://oscimg.oschina.net/oscnet/cd44ba75f

asp.net中使用Global.asax文件中添加应用出错代码,写入系统日志文件或数据库

voidApplication_Error(objectsender,EventArgse){//在出现未处理的错误时运行的代码ExceptionobjErrServer.GetLastError().GetBaseException();//获取错误

Twitter的分布式自增ID算法snowflake (Java版)

概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移

C#中DataTable的一些常用操作 - HelloWorld