【问题标题】:Merging lists of IEnumerable type using a common attribute's value使用公共属性的值合并 IEnumerable 类型的列表
【发布时间】:2015-04-05 04:41:49
【问题描述】:

我有 6 个IEnumerable<SalesSummaryDAO> 类型列表。 SalesSummaryDAO 如下所示,

  public class SalesSummaryDAO {

    public int Year {get;set;}

    public decimal? Cost {get;set;}

}

这里是列表;

        IEnumerable<SalesSummaryDAO> FabricCost = getFabricCostDataByYear();
        IEnumerable<SalesSummaryDAO> AccessoryCost = getAccessoryCostDataByYear();
        IEnumerable<SalesSummaryDAO> FOBRevenue = getFobRevenueDataByYear();
        IEnumerable<SalesSummaryDAO> StockCost = getStockLotsCostDataByYear();
        IEnumerable<SalesSummaryDAO> StockRevenue = getStockLotsRevenueDataByYear();
        IEnumerable<SalesSummaryDAO> FixedCost = getFixedCost();

如您所见,每个列表都包含一组 SalesSummaryDAO 类型的对象。我需要做的是,我想使用这些列表计算每年的净利润。例如,2015年的净利润计算如下:

NetProfit (2015) = FOBRevenue(2015) + StockRevenue(2015) - FabricCost(2015) - AccessoryCost(2015) - StockCost(2015) - FixedCost(2015)

计算每年的净利润后,我想将它们存储在另一个IEnumerable&lt;SalesSummaryDAO&gt; 列表中,其中成本变量保存每年的净利润。

【问题讨论】:

  • 你有列表,你有公式,那么你的问题到底是什么?我想您只想对此数据使用一个列表,而不是六个列表。我说的对吗?
  • @ChitanyaGadkari 好像你还没有清楚地理解这个问题。无论如何,由于下面的答案,我找到了解决方案

标签: c# list ienumerable


【解决方案1】:

您可以使用分组:

var resultList = FabricCost.Concat(AccessoryCost)  // append together
                           .Concat(FOBRevenue)     // append together
                           .Concat(StockCost)      // append together
                           .Concat(StockRevenue)   // append together
                           .Concat(FixedCost)      // append together 
                           .GroupBy(x => x.Year)   // group by year
                           .Select(g => new SalesSummaryDAO ()
                            {
                              Year = g.Key,
                              Cost = g.Sum(x => x.Cost)
                            }) // project to SalesSummaryDAO 
                           .ToList(); // make it a real list!

这会将您的所有列表按年份分组并汇总 - 只需使您要减去的项目具有负成本(例如面料成本)。

【讨论】:

    猜你喜欢
    • 2021-08-27
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多