1

数据表中有三列A,B and C。现在每一列都是decimal. 现在我想dt.Columns["A"].Expression="B+C";添加 B 列的记录和 C 列的记录。现在,如果有任何值,B or Cnull添加 B 和 C 将为空,例如 B 的值为 3,而 C 的值为null第一行,那么B+C(3+null)null是不合适的,添加的结果应该是3。如果我替换0而不是nullthen没关系。但是,无论记录中有空值,它都应该保留,并且不应该被替换0。也就是说,空值不应该被替换,0并且当使用任何十进制值添加空值时null值应视为0

有可能吗,我们该怎么做?

编辑 请参阅以下答案, dt.Rows[0]["B"] = DBNull.Value; 但我有问题,如根据我的代码我无法DBNull.Value直接分配dt.Rows[0]["B"] = DBNull.Value;我必须将它存储在一个类型的变量中objectObject obj; obj=DBNull.Value 然后该值进入表。然后它给出错误null value can not be stored to the column B.

4

1 回答 1

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"]);
于 2010-05-15T05:25:10.517 回答