我有一个
list<>
,我需要将列表的每一行传递给存储过程。
我目前有一个 for every 循环来计算循环中的行数并迭代那么多次。但它每次只迭代第一行。相反,我每次都想转到下一行。
我正在使用 ASP.NET Core Razor 页面构建 Web 应用程序,我不想使用 MVC 架构,因为我觉得它对我来说太复杂了。
[BindProperty]
public OrderProduct OrderProduct { get; set; }
public async Task<IActionResult> OnPostSaveOrder()
{
if (!ModelState.IsValid)
{
return Page();
}
cart = SessionHelper.GetObjectFromJson<List<OrderProduct>>(HttpContext.Session, "ProductCart");
for (var i = 0; i < cart.Count; i++)
{
objProduct.AddProductsToOrder(OrderProduct);
}
await _context.SaveChangesAsync();
HttpContext.Session.Clear();
return RedirectToPage("./Index");
}
根据 @Codexer 在评论中的回答,这可以通过将循环更改为以下内容来实现:
for (var i = 0; i <= cart.Count; i++)
{
objProduct.AddProductsToOrder(cart[i]);
}
值得注意的是,这发生了变化:
< cart.Count
至 <= cart.Count
objProduct.AddProductsToOrder(OrderProduct)
至 objProduct.AddProductsToOrder(cart[i])
也就是说,一个简单的
foreach
效果会更好,因为您不需要增量器。这看起来像:
foreach (var product in cart)
{
objProduct.AddProductsToOrder(product);
}