gpt4 book ai didi

c# - 如何使用 foreach 获取 List 对象属性值的总和

转载 作者:行者123 更新时间:2023-11-30 13:56:55 25 4
gpt4 key购买 nike

我想做什么

计算购物车列表中所有商品的价格总和。

我是如何尝试解决的

我认为将它作为一个属性添加到 Cart 类中是有意义的。我还认为仅使用 foreach 循环迭代 CartList 并将商品价格 (ProductsInCart.Price) 添加到临时变量 (PriceSum) 是合乎逻辑的,该变量在“Cart.PriceAllContent”属性中返回。

C#

//Instantiating Cart
Cart C2Cart = new Cart();

//Getting Item in cart from Session
C2Cart.TakeCart();

//Writing out result
Response.Write(C2Cart.PriceAllContent);

public class Cart
{
//FIELDS
private List<ProductsInCart> _cartList;

//PROPERTIES
public List<ProductsInCart> CartList
{
get { return _cartList; }
set { _cartList = value; }
}


public float PriceAllContent
{
get
{
float PriceSum= 0;
foreach (var ProductsInCart in _cartList)
{
PriceSum= +ProductsInCart.Price;
}
return PriceSum;
}
}

...........
}

public class ProductsInCart
{
//FIELDS
private int _id;
private string _name;
private float _price;
private int _amount;

............
}

完整的类代码可以在这里看到(可能还没有完全更新。如果需要请询问) https://github.com/chmodder/PlanteskoleWebsite/tree/master/App_Code

问题

问题是,当写出结果时,它只会写出最后一件商品的价格,而不是所有商品价格的总和。

Response.Write(C2Cart.PriceAllContent);

我已经尝试寻找解决方案,但找不到我需要的。如果有人能帮助我解决问题,我将是一个快乐的人。

最佳答案

如果你想用产品价格递增PriceSum变量,使用+= operator :

foreach (var ProductsInCart in _cartList)
{
PriceSum += ProductsInCart.Price; // instead of =+
}

当您编写 = +value 时,它是两个独立的运算符 = operator+ operator+ProductsInCart.Price 只返回产品的值(value),价格,然后您将此值分配给 PriceSum。结果,您将获得列表中最后一个产品的价格。

您也可以使用 LINQ 代替此循环:

public float PriceAllContent
{
get { return _cartList.Sum(p => p.Price); }
}

关于c# - 如何使用 foreach 获取 List 对象属性值的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23891682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com