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

问题描述 投票:0回答:1

我有一个

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");
}
c# asp.net-core foreach razor-pages asp.net-core-3.1
1个回答
2
投票

根据 @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); 
} 
© www.soinside.com 2019 - 2024. All rights reserved.