DataTable快速定制之Expression属性表达式
本文旨在讨论使用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表达式可以发挥的作用远不止这些,详见:http://msdn.microsoft.com/zh-cn/library/system.data.datacolumn.expression.aspx
不止列可以定制,我们也可以像使用sql操作数据库那样操作DataTable的行,此时要用到DataTable.DefaultView.RowFilter属性。下次再介绍吧有兴趣的可以自己搜索一下。
出处:http://blog.csdn.net/jacky4955/article/details/7282678
关注我】。(●'◡'●)
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Jack_孟】!
本文来自博客园,作者:jack_Meng,转载请注明原文链接:https://www.cnblogs.com/mq0036/p/3719802.html
【免责声明】本文来自源于网络,如涉及版权或侵权问题,请及时联系我们,我们将第一时间删除或更改!
posted on 2014-05-09 23:14 jack_Meng 阅读(5918) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2013-05-09 如何组建中小型SharePoint服务器场