2010-08-05 28 views
68

Ağırlık, hacim ve özellik özelliklerine sahip bir kutular koleksiyonum var.LINQ Lambda İfadelerinde GrupBy, Sayma ve Toplamı Kullanma

Ben

örneğin kutu bilgilerinin (sahibi tarafından) bir özetlenebilir listesini almak için LINQ kullanmak istiyorum

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

Birisi bana Lambda ifadeleriyle nasıl yapıldığını gösterebilir mi?

cevap

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 }