none
Sumar negativos datagridview RRS feed

  • Pregunta

  • Buenos Días amigos

    como puedo sumar importes negativos

    tengo esto que suma los importes de un datagrid

       decimal result = dataGridView1.Rows.Cast<DataGridViewRow>().Sum(x => Convert.ToDecimal(x.Cells["importe"].Value));

    y para sumar los negativos como puedo hacer?

    saludos


    ruben

    martes, 27 de marzo de 2018 9:21

Respuestas

Todas las respuestas

  • No veo por qué habría diferencia entre sumar positivos y negativos.  1 + -1 = 0 y su actual cálculo debería reportar tal cosa de la misma manera.


    Jose R. MCP
    Code Samples

    martes, 27 de marzo de 2018 9:53
    Moderador
  • Hola Jose 

    Pero yo solo quiero sumar los negativos no todo junto

    saludos


    ruben

    martes, 27 de marzo de 2018 10:43
  • porque no comprueba el importe antes de hacer la suma?

    if x.Cells["importe"].Value < 0 then

        decimal result = dataGridView1.Rows.Cast<DataGridViewRow>().Sum(x =>       

        Convert.ToDecimal(x.Cells["importe"].Value));

    en C# la condición es de otra forma...

    martes, 27 de marzo de 2018 12:17
  • Buenas Ruben, 

    Tal cual lo quieres, lo primero seria hacer un Where para obtener los negativos, y después sumarlos

    decimal result = dataGridView1.Rows.Cast<DataGridViewRow>()
    .Where(x => Convert.ToDecimal(x.Cells["importe"].Value) < 0)
    .Sum(x => Convert.ToDecimal(x.Cells["importe"].Value));

    El el caso de que quieras sumar los negativos sin el signo - en el resultado:

    decimal result = dataGridView1.Rows.Cast<DataGridViewRow>()
    .Where(x => Convert.ToDecimal(x.Cells["importe"].Value) < 0)
    .Sum(x=>Math.Abs(Convert.ToDecimal(x.Cells["importe"].Value)));

    Y en el caso de que quieras sumarlos todos, (sumar los negativos con los positivos en el total)

    decimal result = dataGridView1.Rows.Cast<DataGridViewRow>()        
    .Sum(x =>Math.Abs(Convert.ToDecimal(x.Cells["importe"].Value)));

    Como no entiendo cual de los 3 quieres, por si acaso te pongo los 3 

    Nos comentas el resultado

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:


    martes, 27 de marzo de 2018 12:46
  • hola

    puede usar

    Math.Abs()

    para obtener el valor absoluto, o sea le quitas el signo

       decimal result = dataGridView1.Rows.Cast<DataGridViewRow>().Sum(x => Math.Abs(Convert.ToDecimal(x.Cells["importe"].Value)));

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 27 de marzo de 2018 14:03