2010-08-05 43 views
68

Tôi có một bộ sưu tập các hộp có trọng lượng, thể tích và chủ sở hữu.Sử dụng GroupBy, Count và Sum trong LINQ Biểu thức Lambda

Tôi muốn sử dụng LINQ để nhận danh sách tóm tắt (theo chủ sở hữu) về thông tin hộp

ví dụ:

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

Ai đó có thể chỉ cho tôi cách thực hiện điều này với biểu thức Lambda?

Trả lời

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 } 
Các vấn đề liên quan