다음을 통해 공유


방법: 숫자 시퀀스 값의 합 계산(LINQ to SQL)

업데이트: November 2007

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

LINQ to SQL에서 Sum 연산자의 다음과 같은 특징에 유의하십시오.

  • 표준 쿼리 연산자의 집계 연산자인 Sum은 빈 시퀀스 또는 null만 들어 있는 시퀀스를 0으로 계산합니다. LINQ to SQL에서는 SQL 구문이 바뀌지 않고 남아 있습니다. 따라서 Sum은 빈 시퀀스 또는 null만 들어 있는 시퀀스를 0이 아닌 null로 계산합니다.

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

예제

다음 예제에서는 Order 테이블에서 모든 주문의 총 운송료를 검색합니다.

이 쿼리를 Northwind 샘플 데이터베이스에 대해 실행하면 64942.6900이 출력됩니다.

Dim totalFreight = Aggregate ord In db.Orders _
                   Into Sum(ord.Freight)

Console.WriteLine(totalFreight)
System.Nullable<Decimal> totalFreight =
    (from ord in db.Orders
    select ord.Freight)
    .Sum();

Console.WriteLine(totalFreight);

다음 예제에서는 모든 주문에 대한 총 단위 수를 검색합니다.

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

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

Dim totalUnitsOnOrder = Aggregate prod In db.Products _
                        Into Sum(prod.UnitsOnOrder)

Console.WriteLine(totalUnitsOnOrder)
System.Nullable<long> totalUnitsOnOrder =
    (from prod in db.Products
    select (long)prod.UnitsOnOrder)
    .Sum();

Console.WriteLine(totalUnitsOnOrder);

참고 항목

개념

샘플 데이터베이스 다운로드(LINQ to SQL)

기타 리소스

집계 쿼리(LINQ to SQL)