如何在 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);
}
我有一个 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);
}