Pergunta
Usando LINQ to SQL, tenho uma classe Order com uma coleção de OrderDetails.O Order Details possui uma propriedade chamada LineTotal que obtém Qnty x ItemPrice.
Sei fazer uma nova consulta LINQ do banco de dados para encontrar o total do pedido, mas como já tenho a coleção de OrderDetails do BD, existe um método simples para retornar a soma do LineTotal diretamente da coleção?
Gostaria de adicionar o total do pedido como uma propriedade da minha classe Order.Imagino que poderia percorrer a coleção e calcular a soma com um para cada Order.OrderDetail, mas acho que existe uma maneira melhor.
Solução
Você pode fazer LINQ to Objects e usar LINQ para calcular os totais:
decimal sumLineTotal = (from od in orderdetailscollection
select od.LineTotal).Sum();
Você também pode usar expressões lambda para fazer isso, o que é um pouco "mais limpo".
decimal sumLineTotal = orderdetailscollection.Sum(od => od.LineTotal);
Você pode então conectar isso à sua classe Order assim, se quiser:
Public Partial Class Order {
...
Public Decimal LineTotal {
get {
return orderdetailscollection.Sum(od => od.LineTotal);
}
}
}