【发布时间】:2015-03-07 11:59:04
【问题描述】:
嗨,我有数据表,其中显示每 1 箱的最低库存、库存和数量。我想添加一个列来计算我们订购了多少个纸箱。这是我的公式:
dt.Columns["QuantityOrder"].Expression = "(MinimumStock-Stock)/ QuantityPerCarton";
因为我想做例如以下操作:如果 MinimumStock = 4 , Stock = 1 和 QuantityPerCarton = 12。我想要 QuantityOrder = 1 即使它是 0。所以我尝试了这个:
dt.Columns["QuantityOrder"].Expression = Math.Ceiling("(MinimumStock-Stock)/ QuantityPerCarton");
但它有一个构建错误:
The best overloaded method match for 'System.Math.Ceiling(decimal)' has some invalid arguments
和
Argument 1: cannot convert from 'string' to 'decimal'
我该怎么办?这是一个数据表,用 c# 编写
更新:如果 int 将其舍入为 0,则数据类型为 double。
更新 2:库存将永远超过最低库存,因为我使用 sql 过滤了它
【问题讨论】:
-
您正在尝试获取表达式字符串的上限,而不是在表达式中使用上限函数
-
"(MinimumStock-Stock)/ QuantityPerCarton"是字符串,不是表达式。 -
所以我应该这样做吗?"Math.Ceiling(((MinimumStock-Stock) - 1) / QuantitéParCarton)"
-
您可以在表达式中使用的运算符列表在这里 msdn.microsoft.com/en-us/library/… 但我看不到做天花板的方法
-
哦,有 IIF 你可以做到这一点
标签: c# .net datatable expression rounding