Нулевое значение следует рассматривать как 0, когда добавление его выполняется с десятичным значением
-
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"]);