2011-06-12 2 views
3

그룹 별 절에 따라 숫자 열을 합계하여 결과 집합을 정렬해야하는 테이블이 있습니다.LINQ to SQL : orderby 합계 연산

예를 들어, 테이블에는 영업 사원 ID, 주문 번호 및 주문 값이 있습니다. 나는 최고의 판매원을 누적 된 주문량으로 상위 10 위 목록을 원합니다.

SQL과 LINQ에 익숙하지 않으므로 조언을 제공해 주시면 감사하겠습니다. 이 같은

답변

7
var results = context.Sales.GroupBy(s => s.SalesPersonID) 
          .Select(g => new { 
               SalesPersonID = g.Key, 
               Sales = g.Sum(s => s.OrderValue) 
              }) 
          .OrderByDescending(r => r.Sales) 
          .Take(10); 
2

뭔가 :

var orders = new[] 
{ 
    new Order { SalesPersonId = 1, OrderNumber = 1, OrderValue = 1 }, 
    new Order { SalesPersonId = 1, OrderNumber = 2, OrderValue = 2 }, 
    new Order { SalesPersonId = 2, OrderNumber = 2, OrderValue = 2 }, 
}; 

var topSalesMen = orders 
    .GroupBy(arg => arg.SalesPersonId) 
    .Select(arg => new { SalesPersonId = arg.Key, TotalOrderValue = arg.Sum(x => x.OrderValue) }) 
    .OrderByDescending(arg => arg.TotalOrderValue) 
    .Take(10) 
    .ToList();