仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 807|回复: 8
打印 上一主题 下一主题

[学习教程] NET网页编程之DataTable.Compute壮大的功效

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:28:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
前几天同学问我学习方向的问题。有点想法,不知道对不对,怕误导同学,现在“开源一下”。注:括号内是我现在整理的时填加上的。之前还真没想到DataTable.Compute具有这么多的功效
1:聚合函数”Sum()”
2:自在盘算表达式“20*30+1”
3:bool表达式“1=2”
4:IFF逻辑表达式”IIF(20>1000,0,1)”//还撑持IsNull,Trim,SubString等
一个小使用:让DataTable摹拟Excel的Formula功效。
Excel中的Formula功效壮大,假如能让DataTable有相似的功效就行了。年夜部分事务DataTable只是用作数据载体,实在很罕用它做盘算。DataTable供应的函数Compute就供应了功效壮大的盘算功效。
Compute函数的参数就两个:Expression,和Filter。
Expresstion是盘算表达式,关于Expression的具体内容请看这里“http://msdn2.microsoft.com/zh-cn/library/system.data.datacolumn.expression(VS.80).aspx”。而Filter则是前提过滤器,相似sql的Where前提。
1:这里具体先容的就是Expresstion。
先看最复杂的用法,利用聚合函数。这个聚合函数就是报表大概Excel中经常使用的函数,好比Sum,Avg等等。关于数据列,Datatable能够便利的举行盘算,好比DataTable.Cumpute(“Sum(列1)”,”列1>0”);关于复杂的统计功效,这些函数就充足用了。(其他供应的函数有min,max,count,求方差,尺度偏向等等)。这个功效经常使用,倒也不奇异。
再看“自在表达式”盘算。把数学盘算表达式写成字符串,然后间接投进Compute函数盘算,就能够失掉盘算了局。如许,静态天生的盘算表达式就能够盘算出来了。例如说要盘算“列1×30+20+2”大概是地道的数学盘算。
出了盘算出详细的了局,Compute函数还能举行逻辑盘算。例如说这个表达式就可以前往false:Compute(“1=2”,”true”);这个的用法大概想上边的情况差未几,在自在组装一些前提的时分能够失掉了局。
在Excel中,还常常用到的就是LogicTest功效了,能够指定一些逻辑表达式,好比如许的:“IF(20>1000,0,1)”。而这个功效如果放到DataTable中该怎样完成呢?也是用Compute,如许写就能够了:“IIF(20>1000,0,1)”。
在DataTable内里假如完成“IF(C102=0,0,C105/C102*30)”就用上边的这些手艺点就能够了。
2:至于第二个参数Filter,就是一个复杂的查询前提。好比,”true”,“Id>4”,“Namelike’%nd’andsex=’male’”.
前提不成能很庞大,这些已对照够用了。
之前用过的Marge甚么的也不错,还能够作内毗连,在数据量小,必要复杂盘算的情形下,这些功效很有效。
固然,假如逻辑极为庞大,DT的这点功效就不敷了,仍是得本人写逻辑(即便要完成“IF(C102=0,0,C105/C102*30)”,也是要本人写一点处置逻辑的,不外对照通用,写一次就行了)。
----------------------------------
DataTable.Compute办法
盘算用来传送选择前提确当前行上的给定表达式
publicObjectCompute(stringexpression,stringfilter)
实例:
stringsConnectionString;//声明一个字符串
//毗连数据库字符串,毗连到XBMIS数据库,用户名是sa
sConnectionString="DataSource=.;InitialCatalog=XBMIS;UserID=sa;";
//创立SqlConnection数据库毗连工具
SqlConnectionConn=newSqlConnection(sConnectionString);
//翻开Conn
Conn.Open();
//sql语句把T_YongH表中的数据信息都掏出来
stringcommandString="SelectBianHAS编号,ZhuCYHMAS注册名,XingMAS姓名,XingBAS性别FromT_YongH";
SqlDataAdapterdataAdapter=newSqlDataAdapter(commandString,Conn);
ds_datatableds=newds_datatable();
//添补数据集
dataAdapter.Fill(ds,"YongH");
//添补数据表
DataTabledataTable=ds.Tables["YongH"];
//创立一个新行并增加到dataTable数据表中
DataRowdataRow;
dataRow=dataTable.NewRow();
//利用Sum含数盘算编号的总和,利用Count函数盘算编号的个数
dataRow[0]=dataTable.Compute("Sum(编号)","true");
dataRow[1]=dataTable.Compute("Count(编号)","");
//把数据行增加到YongHTable数据表中
dataTable.Rows.Add(dataRow);
GridView1.DataSource=dataTable;
GridView1.DataBind();
参数申明:
expression参数必要聚合函数,要盘算的表达式字符串,基础上相似于SqlServer中的统计表达式。比方,以下是正当表达式:Count(ID)。
filter:统计的过滤字符串,只要满意这个过滤前提的纪录才会被统计,也就是断定在表达式中利用哪些行。
中间码是基于一个虚拟机器。源代码是最高层的,理论上从源代码开始直接编译成本地码能提供最大优化的。而中间码只能是转译成本地码,效率上难免受到损耗。根据虚拟机器所设定的体系结构的特点,和本地机器的差异的多少。
精灵巫婆 该用户已被删除
沙发
发表于 2015-1-18 14:45:42 | 只看该作者
如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。
老尸 该用户已被删除
板凳
发表于 2015-1-22 15:52:13 | 只看该作者
提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。
金色的骷髅 该用户已被删除
地板
发表于 2015-1-31 09:35:14 | 只看该作者
关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。
蒙在股里 该用户已被删除
5#
发表于 2015-2-6 19:02:13 | 只看该作者
我的意思是.net好用,从功能上来说比JAVA强还是很明显的。
若相依 该用户已被删除
6#
发表于 2015-2-18 08:44:31 | 只看该作者
当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。
灵魂腐蚀 该用户已被删除
7#
发表于 2015-3-6 03:12:21 | 只看该作者
主流网站开发语言之PHPHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。
再现理想 该用户已被删除
8#
发表于 2015-3-12 20:42:07 | 只看该作者
有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。
不帅 该用户已被删除
9#
发表于 2015-3-20 02:47:33 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 19:55

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表