国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

實例講解System.Data.DataTable計算功能

2024-07-21 02:43:46
字體:
來源:轉載
供稿:網友
本文根據一個實例著重介紹了System.Data.DataTable的計算功能,相信這篇文章定能為大家的工作和學習有所幫助。

using System;using System.ComponentModel;using System.Data;using System.Windows.Forms;namespace Windowsapplication1...{public partial class Form1 : Form...{public Form1()...{InitializeComponent();}PRivate void button1_Click(object sender, EventArgs e)...{//System.Data.DataTable計算功能詳解,轉載請保留以下信息//測試環境      vs2005,c#           System.Data.DataTable table = new DataTable();//計算常量,可以沒有初始化列object test = table.Compute("1+1", "");Console.WriteLine(test);//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語句并且減輕服務器計算符合。                              }}}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吉首市| 普定县| 毕节市| 华坪县| 高台县| 高州市| 泸州市| 乌鲁木齐市| 剑阁县| 叙永县| 登封市| 安龙县| 资源县| 太康县| 莲花县| 连云港市| 肃北| 曲松县| 濮阳县| 勃利县| 永福县| 汉中市| 太仓市| 西昌市| 台湾省| 徐汇区| 浦北县| 湘西| 突泉县| 昌图县| 闵行区| 尼勒克县| 丰宁| 永登县| 英山县| 方山县| 南岸区| 慈利县| 马龙县| 油尖旺区| 永寿县|