数据表A,B and C
中有三列。现在每列都是decimal
的类型。现在我像dt.Columns["A"].Expression="B+C";
那样添加了B列的记录和C列的记录。现在,如果B or C
的任何值为null
,那么B和C的加法将为空,就像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.
答案 0 :(得分:2)
尝试这样的事情
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"]);