计算C#中数组中多个项目的总和
本文关键字:项目 数组 计算 | 更新日期: 2023-09-27 17:58:31
我正在尝试为类中的项求和。为了更好地解释你,我有一个购物车对象,我可以用这种方法计算它的总和:
public decimal ComputeTotalValue()
{
return itemCollection.Sum(e => e.Item.Price*e.Quantity);
}
我们案例中的项目对象是这样的:
public class CartItem
{
public RestItem Item { get; set; }
public int Quantity { get; set; }
}
现在RestItem类具有以下属性:
public class RestItem
{
public Guid Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public int InStockNow { get; set; }
public int Order { get; set; }
public decimal Price { get; set; }
public bool HasImage { get; set; }
public bool HasModifiers { get; set; }
public string PLU { get; set; }
public int CategoryId { get; set; }
public byte[] ImageArray { get; set; }
public IEnumerable<ModifierOption> Modifiers { get; set; }
}
最后一个属性,Modifiers是我今天包含的新属性,这是内容:
public class ModifierOption
{
public string ID { get; set; }
public decimal Price { get; set; }
}
我想实现的是,当调用ComputeTotalValue时,如果还有ModifierOption字段,我也想计算这些字段的总和,并将结果包括在总和中。
您可以将修改器的价格添加到物品的价格中,不是吗?
public decimal ComputeTotalValue()
{
return itemCollection.Sum(e => (e.Item.Price + e.Item.Modifiers.Sum(m=>m.Price))*e.Quantity);
}
这样做:
public class RestItem
{
public Guid Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public int InStockNow { get; set; }
public int Order { get; set; }
public decimal Price { get; set; }
public bool HasImage { get; set; }
public bool HasModifiers { get; set; }
public string PLU { get; set; }
public int CategoryId { get; set; }
public byte[] ImageArray { get; set; }
public IEnumerable<ModifierOption> Modifiers { get; set; }
public decimal ComputeTotalPrice() {
return (this.Modifiers?.Sum(x => x.Price) ?? 0) + Price;
}
}
public decimal ComputeTotalPrice(){
return itemCollection?.Sum(x => x.ComputeTotalPrice()) ?? 0;
}