如何在 ASP.NET Core 3.1 中逐行迭代列表

How to iterate a list row by row in ASP.NET Core 3.1

我有一个 list<>,我需要将列表的每一行传递给存储过程。

我目前有一个 for each 循环来计算循环中的行数并迭代那么多次。但它每次都只迭代第一行。相反,我每次都想转到下一行。

我正在使用 ASP.NET 核心 Razor 页面构建 Web 应用程序,我不想使用 MVC 架构,因为我觉得它对我来说太复杂了。我不是来自 .NET 背景。请帮忙。

[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); 
}