将数据表中的列相乘
本文关键字:数据表 | 更新日期: 2023-09-27 18:14:45
我有一个c#数据表,其中有一个"price"列和一个"allocation"列,我需要将price列乘以allocation列,并将结果放入price列。有没有一种不用循环遍历表的方法?我试过这样做:
DataTable dt = getData();
dt.Columns["Price"].Expression = "Allocation * Price";
但显然这给了我下面的例外:
Cannot set Expression property due to circular reference in the expression.
有谁知道另一种方法来完成这个吗?事先谢谢。
您可以使用LINQ表达式在一行中完成:
dt.Rows.ForEach(x => x["Price"] = (double)x["Price"] * (double)x["Allocation"]);
您可以在DataTable中添加另一列:
dt.Columns.Add("TotalPrice", typeof(decimal));
dt["TotalPrice"] = "Allocation * Price";
添加一个新列,其值根据其他两个列计算:
dt.Columns.Add("TotalPrice", typeof(decimal), "Allocation * Price");
使用这种方法,如果更改Price
或Allocation
, TotalPrice
将始终是最新的
如果没有单独的列,再次执行计算会发生什么情况....
在某种程度上,你必须添加弯曲数据表来做你想做的事情(而不引入大量潜在的"erm特性")的代码量将比仅仅创建一个类来容纳这些东西更费力。
从datatable中读取数据并不难,从databale中写入数据也不难。