2013-09-30 183 views
1

我有这个类,我想通过我的看法:计算总计

public class AggregateProductionTotals 
{ 
    public int TotalPieces { get; set; } 
    public int TotalPallets { get; set; } 
} 

我产生我的名单有:

var dailyProductionGroup = dailyProduction 
       .OrderBy(o => o.F61Bprod.WPKYFN) 
       .GroupBy(g => new { g.F61Bprod.WPKYFN, g.F61Bprod.WPDOCO }) 
       .Select(g => new AggregateProduction 
           { 
            LineCode = g.Key.WPKYFN, 
            ItemCode = g.Max(i => i.JdeItemBasic.litm), 
            ItemDescriptionEnglish = g.Max(i => i.JdeItemBasic.dsce), 
            ItemDescriptionLocal = g.Max(i=>i.JdeItemBasic.dsc), 
            WorkOrder = g.Key.WPDOCO, 
            NumberOfPallets = g.Count(), 
            TotalPiecesOrUnits = g.Sum(s=>(int)s.F61Bprod.WPTRQT), 
            AvergaWeight = g.Average(a=>Convert.ToInt32(a.F61Bprod.WPLOT2)) 
           }); 

我想计算两个领域的总数,并把它们放到一个新班级中。我目前这样做:

  int totalPallets = 0; 
      int totalPiecesOrUnits = 0; 
      foreach (var item in dailyProductionGroup) 
      { 
       totalPallets += item.NumberOfPallets; 
       totalPiecesOrUnits += item.TotalPiecesOrUnits; 
      } 

然后我创建类,当我返回视图。

我如何用一个简单的LINQ替换foreach来返回我的类?

回答

1

使用Enumerable.Sum

var procutionTotals = new AggregateProductionTotals 
{ 
    TotalPallets = dailyProductionGroup.Sum(i => i.NumberOfPallets), 
    TotalPieces = dailyProductionGroup.Sum(i => i.TotalPiecesOrUnits) 
};