Un valor nulo debe ser considerada como 0 cuando la adición de que se haga con el valor decimal
-
27-09-2019 - |
Pregunta
Hay tres columnas en la tabla de datos A,B and C
. Ahora cada columna es tipo de decimal
. Ahora estoy haciendo como dt.Columns["A"].Expression="B+C";
hacer adición de registro de la columna de B y el registro de la columna C. Ahora bien, si hay algún valor de B or C
es null
luego adición de B y C será NULL como valor de B es 3 y el valor de C es null
para primera fila entonces B+C(3+null)
será null
que no es apropiada, el resultado de la adición debe ser 3
. Si sustituyo 0
en lugar de null
entonces será ok.but dondequiera que hay un valor nulo en los registros debe ser siendo como es y no debe ser sustituido por 0
.That está valor nulo no debe ser reemplazado por 0
y cuando la adición de valor nulo se hace con cualquier valor null
valor decimal debe ser considerado como 0
.
¿Es posible, ¿cómo podemos hacer esto?
Editar
Ver la siguiente respuesta
dónde
dt.Rows[0]["B"] = DBNull.Value;
pero tengo un problema similar, de acuerdo a mi código no puedo DBNull.Value
asignar directamente dt.Rows[0]["B"] = DBNull.Value;
tengo que almacenarlo en una variable de tipo object
como
Object obj;
obj=DBNull.Value
y luego de que el valor va a la table.Then da error como null value can not be stored to the column B.
Solución
intentar algo como esto
dt.Columns["A"].Expression = "ISNULL(B, 0) + ISNULL(C, 0)";
Prueba de trabajo completo:
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"]);