<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      DataTable.Compute方法使用實例

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Data;

      namespace Console11
      {
          class Program
          {
              static void Main(string[] args)
              {
                  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((float)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;
                  //其他函數參考下面的計算列

       

                  //初始化datatale
                  table.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的isnull
                  column.Expression = "isnull(value,10)";
                  test = table.Select("id='id1'")[0]["exp1"];
                  Console.WriteLine(test);
                  //test=1;

                  //三元運算符,相當于sqlserver的case when
                  column.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語句并且減輕服務器計算符合^&^

              }
          }
      }

      posted @ 2008-08-23 15:21  chinaifne  閱讀(3663)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产综合久久亚洲综合| 日韩精品福利视频在线观看| 日韩亚洲视频一区二区三区| 诱人的老师hd中文字幕| 99久re热视频这里只有精品6| 不卡免费一区二区日韩av| 东京热人妻丝袜无码AV一二三区观| 午夜免费视频国产在线| 亚洲av无码国产在丝袜线观看| 亚洲一区二区三区| 日本欧美大码a在线观看| 粉嫩少妇内射浓精videos| 成年女人免费碰碰视频| 精品视频在线观自拍自拍| 国产精品人一区二区三区| 特级毛片在线大全免费播放| 一区二区三区激情都市| 元码人妻精品一区二区三区9| 正在播放国产对白孕妇作爱| 国产国语毛片在线看国产| 推油少妇久久99久久99久久| 久久精品不卡一区二区| 国产精品∧v在线观看| 狠狠五月深爱婷婷网| 国产在线观看播放av| 一亚洲一区二区中文字幕| 国产免费性感美女被插视频| 中文字幕日韩精品一区二区三区| 久久精品无码一区二区三区 | 日韩区中文字幕在线观看| 好吊视频一区二区三区人妖| 天啦噜国产精品亚洲精品| 亚洲av成人免费在线| 亚洲人成电影网站色| 国产明星精品无码AV换脸| 国产精品三级国产精品高| 日韩人妻无码精品久久久不卡| 57pao成人国产永久免费视频| 2021国产成人精品久久| 亚洲中国精品精华液| 中文字幕亚洲人妻系列|