有人可以帮助我吗?此foreach总是错误索引超出范围。必须为非负数并且小于集合的大小。(参数“索引”)即使我给定索引0,解决方案是什么
var store = _cartCollection.Find(x => x.id_cart == entity.id_cart).ToList();
int index = -1;
foreach (var cart in store)
{
var b = index++; // it shows
entity.cart[0].nama_produk = cart.nama_produk;
entity.cart[0].jumlah = cart.jumlah;
entity.cart[0].harga = cart.harga;
entity.cart[0].subtotal = cart.subtotal;
entity.cart[0].notes = cart.notes;
}
这是类对象
我想我错误地声明了实体购物车数组/列表,您知道正确的方法吗?请不要是故意的,我是新手
我不确定您的确切问题在哪里,但是我看到一些可能导致问题的“代码异味”:
在此代码块中:
var store = _cartCollection.Find(x => x.id_cart == entity.id_cart).ToList();
int index = -1;
foreach (var cart in store)
看来您正在根据其ID检索单个购物车,然后对其进行处理。如果我有这项权利,您可以使用以下类似的方法更简单地完成此操作:
var cart = _cartCollection.Find(x => x.id_cart == entity.id_cart).FirstOrDefault();
然后,您根本不需要for循环...只需使用找到的一个购物车即可。关于这一点,您还应该检查购物车是否为空...以防它不存在...但这取决于您的特定用例。
索引对于循环中的每个步骤都在递增...但是从不使用它的值。除非您有理由使用它,否则建议您完全删除它...除非您打算检索多个购物车并将其全部添加到entity.cart集合中。
在此代码块中(实际上是引发错误的原因:
entity.cart[0].nama_produk = cart.nama_produk;
entity.cart[0].jumlah = cart.jumlah;
entity.cart[0].harga = cart.harga;
entity.cart[0].subtotal = cart.subtotal;
entity.cart[0].notes = cart.notes;
代码不清楚。对于您要执行的操作,我的最佳猜测是将找到的购物车的详细信息添加到实体对象上购物车信息的集合中。我还假设entity.cart是一个List或类似的东西。
如果我的假设是正确的,那么您得到该异常的原因是,在将购物车对象添加到该列表之前,cart [0]不存在(这可能是您在此处尝试做的事情)。一种更易读(且更少出错)的方法是:
var entityCart = new Cart {
nama_produk = cart.nama_produk,
jumlah = cart.jumlah,
harga = cart.harga,
subtotal = cart.subtotal,
notes = cart.notes
};
entity.cart.Add(entityCart);
可能是您试图将产品添加到购物车中……在这种情况下,您应该稍微更改变量名,但是其余的非常相似。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句