亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

System.Data.DataTable計算功能詳解

系統 2285 0
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,EventArgse)
... {

// System.Data.DataTable計算功能詳解,轉載請保留以下信息
// 測試環境vs2005,c#
// 作者:jinjazz
// 作者blog: http://blog.csdn.net/jinjazz/


System.Data.DataTabletable
= 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;
// 其他函數參考下面的計算列



// 初始化datatale
table.Columns.Add( " id " , typeof ( string ));
table.Columns.Add(
" value " , typeof ( int ));
for ( int i = 1 ;i <= 10 ;i ++ )
... {
System.Data.DataRowdRow
= 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.DataColumncolumn
= 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的isnull
column.Expression = " isnull(value,10) " ;
test
= table.Select( " id='id1' " )[ 0 ][ " exp1 " ];
Console.WriteLine(test);
// test=1;

// 三元運算符,相當于sqlserver的casewhen
column.Expression = " iif(value>5,1000,2000) " ;
test
= table.Select( " id='id1' " )[ 0 ][ " exp1 " ];
Console.WriteLine(test);
// test=2000;

// like運算符
column.Expression = " iif(idlike'%1',1000,2000) " ;
test
= table.Select( " id='id1' " )[ 0 ][ " exp1 " ];
Console.WriteLine(test);
// test=1000;

// in運算符
column.Expression = " iif(idnotin('id1'),1000,2000) " ;
test
= table.Select( " id='id1' " )[ 0 ][ " exp1 " ];
Console.WriteLine(test);
// test=2000;

// 嵌套的三元運算
column.Expression = " iif(value>5,1000,iif(idlike'%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


// ***********************父子表計算*************************************/


// 初始化子表,父子表關系
DataTabletableChild = new DataTable();

tableChild.Columns.Add(
" id " , typeof ( string ));
tableChild.Columns.Add(
" value " , typeof ( int ));

System.Data.DataSetds
= new DataSet();
ds.Tables.Add(tableChild);
ds.Tables.Add(table);
DataRelationrelation
= new DataRelation( " relation " ,table.Columns[ " id " ],tableChild.Columns[ " id " ]);
ds.Relations.Add(relation);

for ( int i = 1 ;i <= 10 ;i ++ )
... {
System.Data.DataRowdRow
= 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);
// <
分享到:
評論

System.Data.DataTable計算功能詳解


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲欧美专区 | 国产三级久久久精品麻豆三级 | 午夜网站在线观看免费网址免费 | 最新777奇米影视四色 | 欧美大片毛片大片 | 久久久久欧美精品三级 | 国产真实偷人视频在线播放 | 久久夜色精品 | 久久久网站 | 久久中文字幕一区二区三区 | 91亚洲精品国产自在现线 | 在线看一级片 | 国产小视频在线观看免费 | 亚洲精品三区 | 香蕉人精品视频多人免费永久视频 | 国产激情| 欧美精品一区二区三区视频 | 四虎免费在线视频 | 在线播放国产一区 | 久久精品国产主播一区二区 | 在线观看欧美国产 | 精品久久网 | 老扒夜夜春宵粗大好爽aa毛片 | 久久99精品热在线观看15 | 成人国内精品久久久久影 | 国产欧美日本亚洲精品五区 | 天天干天天操天天摸 | 国产资源在线播放 | 深夜视频在线免费观看 | 日日摸日日添日日透 | 亚洲国产天堂在线网址 | 80s成年女人毛片免费观看观看 | 免费视频福利 | 久久婷婷国产麻豆91天堂 | 国产三级在线精品男人的天堂 | 牛牛精品 | 快射视频欧美 | 欧美日韩生活片 | 激情亚洲 | 日本欧美一区二区三区乱码 | 一区二区日韩欧美 |