2010-08-05 2 views
68

나는 가중치, 볼륨 및 소유자 속성을 가진 상자 모음을 가지고 있습니다.LINQ 람다 식에서 GroupBy, 개수 및 합계 사용

나는

예를 들어, 박스 정보 (소유자) 요약 된 목록을 얻으려면 LINQ를 사용하려면

**Owner, Boxes, Total Weight, Total Volume** 
Jim,  5,  1430.00,  3.65 
George, 2,  37.50,  1.22 

누군가 람다 식으로이 작업을 수행 할 수 있습니까?

답변

140
var ListByOwner = list.GroupBy(l => l.Owner) 
          .Select(lg => 
           new { 
            Owner = lg.Key, 
            Boxes = lg.Count(), 
            TotalWeight = lg.Sum(w => w.Weight), 
            TotalVolume = lg.Sum(w => w.Volume) 
           }); 
11
 var q = from b in listOfBoxes 
       group b by b.Owner into g 
       select new 
          { 
           Owner = g.Key, 
           Boxes = g.Count(), 
           TotalWeight = g.Sum(item => item.Weight), 
           TotalVolume = g.Sum(item => item.Volume) 
          }; 
5
var boxSummary = from b in boxes 
       group b by b.Owner into g 
       let nrBoxes = g.Count() 
       let totalWeight = g.Sum(w => w.Weight) 
       let totalVolume = g.Sum(v => v.Volume) 
       select new { Owner = g.Key, Boxes = nrBoxes, 
           TotalWeight = totalWeight, 
           TotalVolume = totalVolume }