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

StackOverflow https://stackoverflow.com/questions/2839009

  •  27-09-2019
  •  | 
  •  

Вопрос

В DataTable есть три столбца A,B and C. Отказ Теперь каждый столбец - тип decimal. Отказ Теперь я делаю, как dt.Columns["A"].Expression="B+C"; Сделать добавление столбца B записи и столбца C's записи C. Теперь, если есть какое-либо значение B or C является null Затем добавление B и C будет нулевым, как значение B равно 3 и C стоимость null Для первого ряда тогда B+C(3+null) будет null что не подходит, результат добавления должен быть 3. Если я заменил 0 вместо null Тогда будет в порядке. Но в записях есть нулевое значение. 0.That это нулевое значение не следует быть замененным 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"]);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top