다음을 통해 공유


숫자 시퀀스에서 값 합계 계산

연산자를 Sum 사용하여 시퀀스의 숫자 값 합계를 계산합니다.

LINQ to SQL에서 연산자의 Sum 다음과 같은 특징을 확인합니다.

  • 표준 쿼리 연산자 집계 연산 Sum 자는 빈 시퀀스 또는 null만 포함된 시퀀스에 대해 0으로 평가됩니다. LINQ to SQL에서 SQL의 의미 체계는 변경되지 않은 상태로 유지됩니다. 이러한 이유로 Sum 빈 시퀀스 또는 null만 포함된 시퀀스의 경우 0이 아닌 null로 계산됩니다.

  • 중간 결과에 대한 SQL 제한 사항은 LINQ to SQL의 집계에 적용됩니다. 64비트 결과를 사용하여 32비트 정수 수량의 합계를 계산하지 않으며 LINQ to SQL 변환 Sum에 대해 오버플로가 발생할 수 있습니다. 이 가능성은 표준 쿼리 연산자 구현으로 인해 해당 메모리 내 시퀀스에 대한 오버플로가 발생하지 않더라도 존재합니다.

예제 1

다음 예제에서는 모든 주문의 총 화물을 Order 테이블에서 찾습니다.

Northwind 샘플 데이터베이스에 대해 이 쿼리를 실행하면 출력은 다음과 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)

예제 2

다음 예제에서는 모든 제품의 주문에 대한 총 단위 수를 찾습니다.

Northwind 샘플 데이터베이스에 대해 이 쿼리를 실행하면 출력은 다음과 780같습니다.

짧은 형식에 대한 오버로드가 없으므로 short 유형(예: UnitsOnOrder)을 Sum로 캐스팅해야 합니다.

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)

참고하십시오