我在C#中有一个带有“价格”列和“分配”列的数据表,我需要将price列乘以分配列,并将结果放在price列中。有没有办法没有循环表?我尝试过这样的事情:
DataTable dt = getData();
dt.Columns["Price"].Expression = "Allocation * Price";
但显然这给了我以下例外:
Cannot set Expression property due to circular reference in the expression.
有谁知道另一种方法来实现这一目标?先谢谢。
答案 0 :(得分:4)
您可以使用LINQ表达式在一行中执行此操作:
dt.Rows.ForEach(x => x["Price"] = (double)x["Price"] * (double)x["Allocation"]);
答案 1 :(得分:2)
您可以在DataTable中添加另一列:
dt.Columns.Add("TotalPrice", typeof(decimal));
dt["TotalPrice"] = "Allocation * Price";
答案 2 :(得分:1)
添加一个新列,其值来自其他两个:
dt.Columns.Add("TotalPrice", typeof(decimal), "Allocation * Price");
使用此方法,如果您更改TotalPrice
或Price
Allocation
将始终保持最新状态
答案 3 :(得分:0)
如果您没有单独的列,当某些内容再次执行计算时会发生什么......
在某些时候,您需要添加弯曲数据表以执行您想要的代码(不引入大量潜在的'erm功能)将比仅仅敲取一个类来保存这些内容更省力。
从数据表中读取来自数据库的写法并不难,也不会绑定到一个东西列表。