it-swarm-pt.tech

Soma dos itens em uma coleção

Usando LINQ to SQL, tenho uma classe Order com uma coleção de OrderDetails. Os Detalhes do pedido têm uma propriedade chamada LineTotal que obtém Qnty x ItemPrice.

Eu sei como fazer uma nova consulta LINQ do banco de dados para encontrar o total do pedido, mas como eu já tenho a coleção de OrderDetails do banco de dados, existe um método simples para retornar a soma do LineTotal diretamente da coleção?

Eu gostaria de adicionar o total do pedido como uma propriedade da minha classe Order. Eu imagino que eu poderia percorrer a coleção e calcular a soma com um para cada Order.OrderDetail, mas acho que existe uma maneira melhor.

70
Adrian

Você pode executar o LINQ to Objects e usar o 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);

Em seguida, você pode conectá-lo à sua classe de pedidos, se desejar:

Public Partial Class Order {
  ...
  Public Decimal LineTotal {
    get {
      return orderdetailscollection.Sum(od => od.LineTotal);
    }
  }
}
157
Espo