Un valor nulo debe ser considerada como 0 cuando la adición de que se haga con el valor decimal

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

  •  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.

¿Fue útil?

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"]);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top