亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C# DataTable中Compute方法用法集錦(數值/字符串/運算符/表等操作)

2020-01-24 01:07:13
字體:
來源:轉載
供稿:網友

本文實例講述了C# DataTable中Compute方法用法。分享給大家供大家參考,具體如下:

Compute函數的參數就兩個:Expression,和Filter。

Expresstion是計算表達式,關于Expression的詳細內容請看這里:

http://msdn2.microsoft.com/zh-cn/library/system.data.datacolumn.expression(VS.80).aspx

而Filter則是條件過濾器,類似sql的Where條件。

DataTable dt = new DataTable();//嵌套的三元運算 牛叉到五體投地object obj = dt.Compute("iif(1000=5,1000,iif(100>100,4001,2000))", null);Response.Write(obj);System.Data.DataTable table = new DataTable();//計算常量,可以沒有初始化列object test = table.Compute("1+1", "");Console.WriteLine(test);string a = "123";System.Double b = 123;decimal c = 123m;Console.WriteLine(Convert.ToDecimal(a));//test=2;test = table.Compute("1+1", "false");Console.WriteLine(test);//test=2;常數計算和filter無關test = table.Compute("abs(1)", "");Console.WriteLine(test);//test=null,不知道為什么這個沒有報錯,而且返回null,其他的數學函數都會抱錯test = table.Compute("2%2", "");Console.WriteLine(test);//test=0;//其他函數參考下面的計算列//初始化datataletable.Columns.Add("id", typeof(string));table.Columns.Add("value", typeof(int));for (int i = 1; i <= 10; i++){  System.Data.DataRow dRow = table.NewRow();  dRow["id"] = "id" + i.ToString();  dRow["value"] = i;  table.Rows.Add(dRow);}//test = table.Compute("value+1", "true");/**/////拋出異常,這里必須是聚合函數//*************************************支持的聚合函數**********************////求數量test = table.Compute("count(id)", "false");Console.WriteLine(test);//test=0;test = table.Compute("count(id)", "true");Console.WriteLine(test);//test=10;//求和test = table.Compute("sum(value)", "");Console.WriteLine(test);//test=55;//test = table.Compute("sum(id)","");/**/////拋出異常,這里不能是string//平均test = table.Compute("avg(value)", "");Console.WriteLine(test);//test=5;//最小test = table.Compute("min(value)", "");Console.WriteLine(test);//test=1;//最大test = table.Compute("max(value)", "");Console.WriteLine(test);//test=10;//統計標準偏差test = table.Compute("StDev(value)", "");Console.WriteLine(test);//test=3.02765035409749//統計方差test = table.Compute("Var(value)", "");Console.WriteLine(test);//test=9.16666666666667//復雜計算test = table.Compute("max(value)/sum(value)", "");Console.WriteLine(test);//test=0.181818181818182/**//*******************************************計算列*************************/System.Data.DataColumn column = new DataColumn("exp1", typeof(float));table.Columns.Add(column);//簡單計算column.Expression = "value*2";test = table.Select("id='id1'")[0]["exp1"];Console.WriteLine(test);//test=2;//字符串函數column.Expression = "len(id)";test = table.Select("id='id1'")[0]["exp1"];Console.WriteLine(test);//test=3;//字符串函數column.Expression = "len(' '+id+' ')";test = table.Select("id='id1'")[0]["exp1"];Console.WriteLine(test);//test=5;//字符串函數column.Expression = "len(trim(' '+id+' '))";test = table.Select("id='id1'")[0]["exp1"];Console.WriteLine(test);//test=3;//字符串函數column.Expression = "substring(id,3,len(id)-2)";test = table.Select("id='id1'")[0]["exp1"];Console.WriteLine(test);//test=1; //substring的起始字符位置為1不是0//類型轉換column.Expression = "convert(substring(id,3,len(id)-2),'System.Int32')*1.6";test = table.Select("id='id1'")[0]["exp1"];Console.WriteLine(test);//test=1.6;//相當于sqlserver的isnullcolumn.Expression = "isnull(value,10)";test = table.Select("id='id1'")[0]["exp1"];Console.WriteLine(test);//test=1;//三元運算符,相當于sqlserver的case whencolumn.Expression = "iif(value>5,1000,2000)";test = table.Select("id='id1'")[0]["exp1"];Console.WriteLine(test);//test=2000;//like運算符column.Expression = "iif(id like '%1',1000,2000)";test = table.Select("id='id1'")[0]["exp1"];Console.WriteLine(test);//test=1000;//in運算符column.Expression = "iif(id not in('id1'),1000,2000)";test = table.Select("id='id1'")[0]["exp1"];Console.WriteLine(test);//test=2000;//嵌套的三元運算column.Expression = "iif(value>5,1000,iif(id like '%1',4000,2000))";test = table.Select("id='id1'")[0]["exp1"];Console.WriteLine(test);//test=4000;//客戶端計算所占總數的百分比column.Expression = "value/sum(value)";test = table.Select("id='id1'")[0]["exp1"];Console.WriteLine(test);//test=0.01818182//客戶端計算差值,比如nba常規賽的勝場差column.Expression = "max(value)-value";test = table.Select("id='id1'")[0]["exp1"];Console.WriteLine(test);//test=9//***********************父子表計算*************************************///初始化子表,父子表關系DataTable tableChild = new DataTable();tableChild.Columns.Add("id", typeof(string));tableChild.Columns.Add("value", typeof(int));System.Data.DataSet ds = new DataSet();ds.Tables.Add(tableChild);ds.Tables.Add(table);DataRelation relation = new DataRelation("relation", table.Columns["id"], tableChild.Columns["id"]);ds.Relations.Add(relation);for (int i = 1; i <= 10; i++){  System.Data.DataRow dRow = tableChild.NewRow();  dRow["id"] = "id1";  dRow["value"] = i;  tableChild.Rows.Add(dRow);}//計算子表記錄數column.Expression = "count(child(relation).value)";test = table.Select("id='id1'")[0]["exp1"];Console.WriteLine(test);//test=10;//計算父子表的百分比column.Expression = "value/sum(child(relation).value)";test = table.Select("id='id1'")[0]["exp1"];Console.WriteLine(test);//test=0.01818182;//計算父子表的差值,比如父表為庫存數量,子表為訂購數量,計算得出需要補充的數量column.Expression = "iif(value-sum(child(relation).value)>0,0,value-sum(child(relation).value))";test = table.Select("id='id1'")[0]["exp1"];Console.WriteLine(test);//test=-54;//比較遺憾的是沒有發現能夠計算同比和環比的方法,而且計算列無法作為約束//結束,DataTable可以讓你盡量發揮聰明才智來減少繁雜的sql語句并且減輕服務器計算符合

更多關于C#相關內容感興趣的讀者可查看本站專題:《C#常見控件用法教程》、《WinForm控件用法總結》、《C#數據結構與算法教程》、《C#面向對象程序設計入門教程》及《C#程序設計之線程使用技巧總結

希望本文所述對大家C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩高清av在线| 精品自拍视频在线观看| 亚洲精品视频中文字幕| 国产精品日韩欧美大师| 欧美限制级电影在线观看| 日韩av手机在线看| 91在线观看免费观看| 精品久久久久久久久中文字幕| 国产精品久久久久久av下载红粉| 亚洲色图校园春色| 欧美另类在线播放| 欧美一区二区视频97| 国产一区二区三区在线观看视频| 成人妇女免费播放久久久| 国产精品成久久久久三级| 97高清免费视频| 日韩电影中文字幕| 久久精品国产久精国产一老狼| 国产一区二区三区在线| 伊人久久久久久久久久久| 亚洲人成电影网站| 5566成人精品视频免费| 在线看欧美日韩| 国产福利精品在线| 51ⅴ精品国产91久久久久久| 欧美人成在线视频| 欧美精品一区三区| 亚洲日本成人网| 日本精品性网站在线观看| 欧美专区国产专区| 亚洲成人av资源网| 97精品一区二区视频在线观看| 2019国产精品自在线拍国产不卡| 97久久精品人搡人人玩| 成人午夜激情免费视频| 韩国v欧美v日本v亚洲| 久久久久久久久久av| 日韩美女在线观看一区| 日韩专区在线播放| 精品久久久久久久久久ntr影视| 色妞色视频一区二区三区四区| 亚洲国产另类久久精品| 一区二区三区www| 国产亚洲一级高清| 日韩av手机在线观看| 欧美激情国产高清| 国产日本欧美视频| 欧美床上激情在线观看| 夜色77av精品影院| 91情侣偷在线精品国产| 亚洲精品国产精品久久清纯直播| 国产女人18毛片水18精品| 日本成熟性欧美| 日韩高清不卡av| 亚洲一区二区三区xxx视频| xxx欧美精品| 亚洲国产精品热久久| 欧洲美女免费图片一区| 777777777亚洲妇女| 国产欧美一区二区三区在线| 欧美成人精品一区| 国产精品极品美女粉嫩高清在线| 亚洲老板91色精品久久| 亚洲免费视频网站| 国产精品扒开腿做| 亚洲风情亚aⅴ在线发布| 欧美中文字幕视频在线观看| 国产精品久久久久久久久粉嫩av| 国内成人精品一区| 国产婷婷色综合av蜜臀av| 欧美亚洲视频一区二区| 九九久久久久久久久激情| 国产精品女视频| 一本色道久久综合狠狠躁篇怎么玩| 国产美女精品免费电影| 大桥未久av一区二区三区| 日韩高清av一区二区三区| 国产欧美日韩最新| 91av在线播放| 欧美精品激情在线观看| 日韩免费视频在线观看| 26uuu亚洲国产精品| 午夜精品一区二区三区在线视频| 91国产视频在线| 尤物九九久久国产精品的特点| 91精品国产一区| 亚洲精品电影久久久| 成人在线视频福利| 51色欧美片视频在线观看| 精品国产欧美一区二区五十路| 91精品国产高清久久久久久91| 精品国偷自产在线| 日韩国产欧美精品一区二区三区| 97成人在线视频| 亚洲成av人片在线观看香蕉| 午夜剧场成人观在线视频免费观看| 久久久久99精品久久久久| 韩国欧美亚洲国产| 色哟哟网站入口亚洲精品| 久久久噜噜噜久久久| 亚洲天堂免费观看| 久久婷婷国产麻豆91天堂| 国产成人亚洲综合91精品| 亚洲女同性videos| 国产福利视频一区二区| 欧美成人手机在线| 国产欧美一区二区三区久久人妖| 亚洲性生活视频在线观看| 韩国美女主播一区| 欧美成人免费在线观看| 欧美国产精品人人做人人爱| 中文字幕少妇一区二区三区| 亚洲成色777777在线观看影院| 97激碰免费视频| 欧洲亚洲免费视频| 色偷偷av亚洲男人的天堂| 欧美日韩免费在线观看| 中文字幕免费精品一区| 精品在线观看国产| 日韩av在线免费播放| 欧美亚洲国产日韩2020| 久久精品2019中文字幕| 国产精品偷伦免费视频观看的| 欧美性受xxxx白人性爽| 欧美激情第三页| 国产精品久久久久久久av电影| 午夜精品在线视频| 中文日韩电影网站| 国产午夜精品理论片a级探花| 国产精品三级网站| 亚洲美女黄色片| 国产v综合ⅴ日韩v欧美大片| 懂色aⅴ精品一区二区三区蜜月| 国产成人精品综合久久久| 精品国产乱码久久久久酒店| 亚洲性无码av在线| 亚洲电影免费观看高清完整版在线| 亚洲一区二区三区xxx视频| 欧美不卡视频一区发布| 国产91精品久久久久久久| 亚洲精品久久久久久下一站| 成人免费高清完整版在线观看| 一区二区三区动漫| 亚洲福利精品在线| 91久久精品国产91久久性色| 国产日韩av高清| 精品一区电影国产| 国产日产欧美a一级在线| 一区二区三区回区在观看免费视频| 91精品视频在线播放| 成人女保姆的销魂服务| 亚洲精品在线不卡| 亚洲另类激情图| 国产精品福利在线观看网址| 欧美又大又粗又长| 91国内揄拍国内精品对白| 揄拍成人国产精品视频| 自拍偷拍免费精品| 91精品国产自产在线| 国产精品成人aaaaa网站| 国产精品美女久久久久av超清| 大伊人狠狠躁夜夜躁av一区| 538国产精品一区二区免费视频| 亚洲自拍欧美另类|