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

System.Data.DataTable計算功能詳解

系統 1985 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條評論
主站蜘蛛池模板: 日本叼嘿 | 色婷五月| 国产成人综合久久精品亚洲 | 久久伊人精品 | 香蕉成人 | 成人影院免费在线观看 | 日本强日本不卡一 | 毛片一级在线观看 | 成人5252色 | 奇米影视一区 | 国产精品午夜免费福利视频 | 又黑又粗又硬欧美视频在线观看 | 美日韩中文字幕 | 日韩爱爱视频 | 精品国产一区二区在线观看 | 四虎影视地址 | 亚洲人成免费网站 | 久久国产精品范冰啊 | 久久精品国产福利国产秒 | 黄色成人免费网站 | 999人在线精品播放视频 | 日本伊人色综合网站 | 国产色综合久久无码有码 | 国产精品久久做爰 | 精品一区二区三区在线视频观看 | 国产精品每日更新在线观看 | 大陆60老妇xxxxhd | 亚洲国产高清在线精品一区 | 欧美一级毛片日本 | 亚洲国产成人久久午夜 | 国产精品1区2区3区在线播放 | 青青青国产观看免费视频 | 亚洲人成依人成综合网 | 草草在线观看视频 | 在线观看视频国产 | 美女又黄又免费的视频 | 国产福利不卡视频在免费播放 | 亚洲久久草 | 一级特级欧美a毛片免费 | 中文字幕一区精品 | 国产国语videosex |