将数据表中的列相乘

本文关键字:数据表 | 更新日期: 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");

使用这种方法,如果更改PriceAllocation, TotalPrice将始终是最新的

如果没有单独的列,再次执行计算会发生什么情况....

在某种程度上,你必须添加弯曲数据表来做你想做的事情(而不引入大量潜在的"erm特性")的代码量将比仅仅创建一个类来容纳这些东西更费力。

从datatable中读取数据并不难,从databale中写入数据也不难。