2010-08-05 5 views
68

J'ai une collection de boîtes avec les propriétés weight, volume et owner.Utilisation de GroupBy, Count et Sum dans les expressions LINDA Lambda

Je veux utiliser LINQ pour obtenir une liste résumée (par le propriétaire) des informations de boîte

par exemple

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

Quelqu'un peut-il me montrer comment faire avec les expressions lambda?

Répondre

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 } 
Questions connexes