如何根据另一个成员的值对泛型列表中某个成员的数值求和

本文关键字:成员 求和 列表 何根 另一个 泛型 | 更新日期: 2023-09-27 18:21:29

我有一个通用列表:

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);

但这是不可用的。

如何将总和限制在指定月份?

如何根据另一个成员的值对泛型列表中某个成员的数值求和

您应该先应用过滤器,然后像一样求和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)
    });

您有Where子句可用于此类操作

myList.Where(x => x. monthYr == "Nov-15").Sum(x => x.TotalPackages);