연산자를 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)
참고하십시오
- 집계 쿼리
- 샘플 데이터베이스 다운로드하는