博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DataTable快速定制之Expression属性表达式
阅读量:6984 次
发布时间:2019-06-27

本文共 1109 字,大约阅读时间需要 3 分钟。

本文旨在讨论使用DataColumn.Expression属性定制列,高手绕过。

这里只介绍两个经典的场景,抛砖引玉其他更多功能待各位读者自己发现吧!

场景一:

DataTable里有两个列分别为每种商品的[price]单价和[Num]数量,现在需要得到每种商品的总价值:

方法一(不推荐):

增加一列[Value],遍历DataTable用每一行的[price]*[num]得到价值,然后赋给列[value],代码如下:

dt.Columns.Add("value");//增加新列value存储总价值foreach(DataRow dr in dt.Rows)//遍历计算每种商品总值并存储到列[value]中{    dr["value"] = dr["price"]*dr["num"];}

之后就可以进行常规的绑定展示操作。

方法二(推荐):

增加一列[Value],使用该列的Expression属性定制此列,代码如下:

dt.Columns.Add("value");dt.Columns["value"].Expression = "price * num";

这样就好了,之后就可以进行常规的绑定展示操作,因为Expression表达式是延迟执行的,即绑定时才执行,所以没有绑定的情况下,看到的DataTable内容还是不变的,如果要得到在此表达式作用下的表请使用方法:toTable();

如下:

DataTable newTable = dt.DefaultView.ToTable();

这里只介绍了数学表达式的用法,类似的加减除法都可以这样实现,如果是要连接字符串怎么办呢?请见下面的例子:

场景二:

比如:DataTable中有两列分别是[Name]部门名称和[DepartId]部门ID,现在需要一个部门和ID连接在一起的列用来展示比如:人力资源部-010怎么做呢?方法同上,这里就要用到字符串连接表达式了,见代码:

dt.Columns["NameAndId"].Expression = "name+'-'+departid";

这里的“+”用作连接字符串的作用,再也不用一个个遍历的方法来实现类似的功能了,当然Expression表达式可以发挥的作用远不止这些,详见:

不止列可以定制,我们也可以像使用sql操作数据库那样操作DataTable的行,此时要用到DataTable.DefaultView.RowFilter属性。下次再介绍吧有兴趣的可以自己搜索一下。

出处:http://blog.csdn.net/jacky4955/article/details/7282678

你可能感兴趣的文章
brew install php55 报错 clang: error
查看>>
ubuntu18.4 安装swoole 和 php 扩展 swoole
查看>>
pcDuino入门心得+HDMI声音+蓝牙功放
查看>>
面向对象2
查看>>
c++测试题2016-6-2
查看>>
Nginx与Serssion一致性问题
查看>>
社会化工程攻击针对目标不再仅限最终用户
查看>>
Hadoop源码分析HDFS ClientProtocol——getBlockLocations
查看>>
AndroidWidget实践 --- EverydayTips开发(6)
查看>>
mysql 随机查询数据
查看>>
CodeIgniter学习笔记一
查看>>
workspace-project-target关系与解耦工程结构总结
查看>>
EhCache的配置
查看>>
Linux 设置时区
查看>>
在maven中引用github上的资源
查看>>
4、Angular JS 学习笔记 – 创建自定义指令 [翻译中]
查看>>
Flex手机开发-退出应用程序
查看>>
常用的7大排序算法汇总
查看>>
数字转化成时分秒(二)
查看>>
Golang通过syscall调用win32的Api
查看>>