当使用十进制值添加空值时,应将空值视为0

时间:2010-05-15 05:18:33

标签: c# winforms null datacolumn

数据表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.

之类的错误

1 个答案:

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