Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Use o Sum operador para calcular a soma dos valores numéricos em uma sequência.
Observe as seguintes características do Sum operador no LINQ to SQL:
O operador de agregação do Operador de Consulta Padrão avalia-se como zero para uma sequência vazia ou uma sequência que contém apenas nulos. No LINQ to SQL, a semântica do SQL é deixada inalterada. Por esse motivo,
Sumavalia como nulo em vez de zero para uma sequência vazia ou para uma sequência que contém apenas nulos.As limitações do SQL em resultados intermediários aplicam-se a agregações em LINQ to SQL. A soma de quantidades inteiras de 32 bits não é calculada usando resultados de 64 bits e pode ocorrer estouro para a tradução LINQ to SQL de
Sum. Essa possibilidade existe mesmo que a implementação do Operador de Consulta Padrão não cause um overflow na sequência correspondente em memória.
Exemplo 1
O exemplo a seguir localiza o frete total de todos os pedidos na Order tabela.
Se você executar essa consulta no banco de dados de exemplo Northwind, a saída será: 64942.6900.
System.Nullable<Decimal> totalFreight =
(from ord in db.Orders
select ord.Freight)
.Sum();
Console.WriteLine(totalFreight);
Dim totalFreight = Aggregate ord In db.Orders _
Into Sum(ord.Freight)
Console.WriteLine(totalFreight)
Exemplo 2
O exemplo a seguir localiza o número total de unidades encomendadas para todos os produtos.
Se você executar essa consulta no banco de dados de exemplo Northwind, a saída será: 780.
Observe que você deve transmitir short tipos (por exemplo, UnitsOnOrder) porque Sum não tem sobrecarga para tipos curtos.
System.Nullable<long> totalUnitsOnOrder =
(from prod in db.Products
select (long)prod.UnitsOnOrder)
.Sum();
Console.WriteLine(totalUnitsOnOrder);
Dim totalUnitsOnOrder = Aggregate prod In db.Products _
Into Sum(prod.UnitsOnOrder)
Console.WriteLine(totalUnitsOnOrder)