none
Forma de soma de null retornar o valor RRS feed

  • Pergunta

  • Olá,

    Como posso retornar o valor quando faço soma com null?

    Exemplo:

    x.PriceItems.Sum(wp => 
                                (wp.Price != null ? wp.Price : 0) *  
                                (wp.Amount != null ? wp.Amount : 0)
                                ) : 0
                                + 

    x.custom.PriceItems.Sum(spi => 
                            (spi.Price != null? spi.Price: 0) * (spi.Amount != null? spi.Amount: 0)                        
                            )),

    O PriceItems é null dai a soma retorna null, tentei fazer (x.PriceItems.firstOrDefault() != null? mesmo de cima ? 0) + , funcionou, mas ficou muito feio, muitos ifs, gostaria de um outro modo, alguém pode me ajuda?


    Guisal

    sexta-feira, 10 de fevereiro de 2017 19:25

Respostas

  • Olá,

    Dá pra encurtar um pouco isso:

    Tenta assim:

    x.PriceItems.Sum(wp => (wp.Price ?? 0) * (wp.Amount ?? 0) +
            x.custom.PriceItems.Sum(spi => (spi.Price ?? 0) * (spi.Amount ?? 0)));

    Perceba que utilizei ??. Ele faz implicitamente a verificação do item, se for null já retorna o que está logo após os sinais.

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MVP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta GuiSal segunda-feira, 13 de fevereiro de 2017 11:17
    sexta-feira, 10 de fevereiro de 2017 19:50
  • Guilerme,

    Tenta utilizar o operador anulável :

                x.PriceItems.Sum(wp =>
                                (wp.Price ?? : 0) *
                                (wp.Amount ?? 0)
                                ) : 0
                                +
    
    x.custom.PriceItems.Sum(spi =>
                            (spi.Price ?? 0) * ( spi.Amount ?? 0)
                            )),


    Diego Almeida Barreto</strong> <br/> <em>System Analyst / Software Developer</em> <br/> <img </p> </div>


    sexta-feira, 10 de fevereiro de 2017 19:56

Todas as Respostas

  • Olá,

    Dá pra encurtar um pouco isso:

    Tenta assim:

    x.PriceItems.Sum(wp => (wp.Price ?? 0) * (wp.Amount ?? 0) +
            x.custom.PriceItems.Sum(spi => (spi.Price ?? 0) * (spi.Amount ?? 0)));

    Perceba que utilizei ??. Ele faz implicitamente a verificação do item, se for null já retorna o que está logo após os sinais.

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MVP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta GuiSal segunda-feira, 13 de fevereiro de 2017 11:17
    sexta-feira, 10 de fevereiro de 2017 19:50
  • Guilerme,

    Tenta utilizar o operador anulável :

                x.PriceItems.Sum(wp =>
                                (wp.Price ?? : 0) *
                                (wp.Amount ?? 0)
                                ) : 0
                                +
    
    x.custom.PriceItems.Sum(spi =>
                            (spi.Price ?? 0) * ( spi.Amount ?? 0)
                            )),


    Diego Almeida Barreto</strong> <br/> <em>System Analyst / Software Developer</em> <br/> <img </p> </div>


    sexta-feira, 10 de fevereiro de 2017 19:56