当与十进制值相加时,空值应被视为 0
-
27-09-2019 - |
题
数据表中有三列 A,B and C
. 。现在每一列都是类型 decimal
. 。现在我正在做这样的事情 dt.Columns["A"].Expression="B+C";
将 B 列的记录和 C 列的记录相加。现在如果有任何值 B or C
是 null
那么 B 和 C 的加法将为 null,就像 B 的值为 3,C 的值为 null
对于第一行然后 B+C(3+null)
将 null
这是不合适的,相加的结果应该是 3
.如果我更换 0
代替 null
那么就可以了。但是,无论记录中存在空值,它都应该保留,并且不应该被替换 0
.即为空值 不应该 被替换为 0
当对任何十进制值添加空值时 null
值应被视为 0
.
有可能吗,我们怎样才能做到这一点?
编辑请参阅以下答案dt.Rows[0]["B"] = DBNull.Value;
但我有问题,比如根据我的代码我无法分配 DBNull.Value
直接地 dt.Rows[0]["B"] = DBNull.Value;
我必须将它存储在一个类型的变量中 object
喜欢Object obj;
obj=DBNull.Value
然后该值进入表。然后它给出类似的错误 null value can not be stored to the column B.
解决方案
尝试这样的事情
dt.Columns["A"].Expression = "ISNULL(B, 0) + ISNULL(C, 0)";
完整工作测试:
DataTable dt = new DataTable();
dt.Columns.Add("A", typeof(decimal));
dt.Columns.Add("B", typeof(decimal));
dt.Columns.Add("C", typeof(decimal));
dt.Rows.Add();
dt.Rows[0]["B"] = DBNull.Value;
dt.Rows[0]["C"] = 3;
dt.Columns["A"].Expression = "ISNULL(B, 0) + ISNULL(C, 0)";
Console.WriteLine(dt.Rows[0]["A"]);
不隶属于 StackOverflow