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

Posted

技术标签:

【中文标题】如何在 ASP.NET Core 3.1 中逐行迭代列表【英文标题】:How to iterate a list row by row in ASP.NET Core 3.1 【发布时间】:2021-03-02 08:48:25 【问题描述】:

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

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

我正在使用 ASP.NET Core 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");

【问题讨论】:

objProduct.AddProductsToOrder(OrderProduct); => objProduct.AddProductsToOrder(cart[i]); 然后&lt; cart.Count => &lt;= cart.Count 老实说,一个简单的foreach 会更好,反正你不需要那个增量。比如:foreach (OrderProduct prod in cart) objProduct.AddProductsToOrder(prod); @Codexer 你是个传奇人物。惊人的。我喜欢你。自 3 天以来,我一直在努力实现这一目标。这是我在 4 个月前因 Covid 而失业后正在从事的个人项目。你绝对让我开心。继续努力。 没问题,很高兴为您提供帮助。 仅供参考:由于@Codexer 没有将此作为答案提交,因此我已代表他们提交。这将允许 Sai 接受此答案,并将问题标记为已回答。由于答案不是我的贡献,因此我已将其作为社区 wiki 提交。 【参考方案1】:

根据@Codexer 在 cmets 中的回答,这可以通过将循环更改为以下内容来实现:

for (var i = 0; i <= cart.Count; i++)

    objProduct.AddProductsToOrder(cart[i]);

值得注意的是,这种变化:

&lt; cart.Count&lt;= cart.Count objProduct.AddProductsToOrder(OrderProduct)objProduct.AddProductsToOrder(cart[i])

也就是说,一个简单的foreach 会更好,因为您不需要增量器。这看起来像:

foreach (var product in cart) 
 
    objProduct.AddProductsToOrder(product); 
 

【讨论】:

谢谢你,老实说,我不认为它值得回答,为什么我没有发布一个(也许是因为我在移动设备上)。你在需要的地方给予了赞扬,我为此感谢你。

以上是关于如何在 ASP.NET Core 3.1 中逐行迭代列表的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET Core 3.1 生产中配置 IdentityServer

登录 ASP.NET Core 3.1 后如何获取用户信息

如何在 ASP.NET CORE 3.1 中获取客户端 IP 地址?

如何在 ASP.NET Core 3.1 中启用多重身份验证?

ASP.NET Core 3.1 MVC 如何让用户在注册时选择自己的角色?

如何在我的 asp.net core 3.1 应用程序中播种用户和角色?