将数据表中的列相乘

时间:2011-11-16 17:02:10

标签: c# datatable

我在C#中有一个带有“价格”列和“分配”列的数据表,我需要将price列乘以分配列,并将结果放在price列中。有没有办法没有循环表?我尝试过这样的事情:

DataTable dt = getData();
dt.Columns["Price"].Expression = "Allocation * Price";

但显然这给了我以下例外:

Cannot set Expression property due to circular reference in the expression.

有谁知道另一种方法来实现这一目标?先谢谢。

4 个答案:

答案 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");

使用此方法,如果您更改TotalPricePrice

Allocation将始终保持最新状态

答案 3 :(得分:0)

如果您没有单独的列,当某些内容再次执行计算时会发生什么......

在某些时候,您需要添加弯曲数据表以执行您想要的代码(不引入大量潜在的'erm功能)将比仅仅敲取一个类来保存这些内容更省力。

从数据表中读取来自数据库的写法并不难,也不会绑定到一个东西列表。