chm*_*der 3 c# oop foreach list
查找购物车列表中所有商品的价格总和.
我认为将它添加为Cart-class中的属性是有意义的.我还认为使用foreach循环迭代CartList并将itemprice(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);
Run Code Online (Sandbox Code Playgroud)
类
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;
............
}
Run Code Online (Sandbox Code Playgroud)
这里可以看到完整的类代码(可能还没有完全更新.如果需要,可以询问) https://github.com/chmodder/PlanteskoleWebsite/tree/master/App_Code
问题是,在写出结果时,它只会写出最后的项目价格而不是所有迭代的总和.
Response.Write(C2Cart.PriceAllContent);
Run Code Online (Sandbox Code Playgroud)
我已经尝试过寻找解决方案,但找不到我需要的东西.如果有人能帮我解决问题,我会是一个快乐的人.
如果要PriceSum使用产品价格增加变量,请使用+ =运算符:
foreach (var ProductsInCart in _cartList)
{
PriceSum += ProductsInCart.Price; // instead of =+
}
Run Code Online (Sandbox Code Playgroud)
当你写= +value它然后它的两个独立的运算符=运算符和+运算符,即+ProductsInCart.Price只返回product,price的值,然后你将这个值赋值给PriceSum.因此,您将获得列表中最后一个产品的价格.
您也可以使用LINQ代替此循环:
public float PriceAllContent
{
get { return _cartList.Sum(p => p.Price); }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7387 次 |
| 最近记录: |