我有这个通用名单:
private List<ItemsForMonthYear> _itemsForMonthYearList;
...存储此类的实例化:
public class ItemsForMonthYear
{
public String ItemDescription { get; set; }
public String monthYr { get; set; }
public int TotalPackages { get; set; }
public Decimal TotalPurchases { get; set; }
public Decimal AveragePrice { get; set; }
public Double PercentOfTotal { get; set; }
}
我需要计算每个月(单独)列表中所有TotalPackages的总数。我有一个开始:
private int GetGrandTotalPackagesForMonth(String YYYYMM)
{
return _itemsForMonthYearList.Sum(x => x.TotalPackages);
}
但是,这将获得所有个月的Grand TotalPackages;我只想(一次一个)一个月的大总计。我希望我可以使用“Where”这样的东西:
return _itemsForMonthYearList.Sum(x => x.TotalPackages).Where(x => x.monthYr == YYYYMM);
......但这不可用。
如何将总和限制在指定的月份?
答案 0 :(得分:4)
您应首先应用过滤器,然后将TotalPackages
加起来像:
return _itemsForMonthYearList.Where(x => x.monthYr == YYYYMM).Sum(x => x.TotalPackages);
虽然不相关,但如果您愿意,可以使用GroupBy
在单个查询中获取每个月的总和,如:
var sumForeachMonth = _itemsForMonthYearList.GroupBy(x => x.monthYr)
.Select(grp => new
{
Month = grp.Key,
Sum = grp.Sum(r => r.TotalPackages)
});
答案 1 :(得分:1)
您可以使用Where子句进行此类操作
myList.Where(x => x. monthYr == "Nov-15").Sum(x => x.TotalPackages);