我有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<SalesSummaryDAO>
列表中,其中成本变量保持每年的净利润。
答案 0 :(得分:0)
您可以使用分组:
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!
这会按年份对所有列表进行分组并总结 - 只需将要减去的项目设为负成本(例如面料成本)。