Нулевое значение следует рассматривать как 0, когда его добавление выполняется с десятичным значением - PullRequest
1 голос
/ 15 мая 2010

В таблице данных есть три столбца 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.

Возможно ли, как мы можем это сделать?

EDIT Смотрите следующий ответ где 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 Ответ

2 голосов
/ 15 мая 2010

Попробуйте что-то вроде этого

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