首页 > 解决方案 > 嵌套 for 循环问题 - 需要帮助

问题描述

我是 .Net 的初学者,我在 for 循环方面几乎不需要帮助。我想打印来自两个用户的所有消息,并在 (li) 中格式化消息。但是,当 rightFilter 没有更多消息时, (li) 正在制作副本,就像它在图像上一样。

我怎样才能解决这个问题?

     @foreach (var left in leftFilter)
        {
            @foreach (var right in rightFilter)
            {

                <li>@left.Message</li>
                <li style="text-align:right;">@right.Message</li>
            }
         }

图片

标签: c#asp.net.net

解决方案


不要编辑您的问题以包含答案。发布答案


您没有很好地解释问题-“嗨,伙计们,这段代码不会产生我想要的输出……”并不能帮助我们知道您想要什么

看起来您想要获取两个列表并交错它们的项目,因此您可以一遍又一遍地打印 list1 然后 list2 中的值

如果这些项目在位置上是相关的,我想我可能使用了表格而不是 html 列表,并且没有必要为此使用 linq;记住简单的循环:

@for(int x = 0; x < left.Length; x++){
  <li>@left[x].Message</li>
  <li style="text-align:right;">@right[x].Message</li>
}

或者,如果您希望它们对齐,则每个循环的 TR 内有两个 TD

您的原始代码的基本问题是,对于左侧的每个项目(比如说 10 个项目),它会打印出整个右侧列表,因此您最终会得到右侧列表重复 10 次(输出 110 行)。你不能轻易地在循环中使用循环来实现你想要的,但是如果你想看一个荒谬的例子:

int x = 0;
foreach(var l in left){
  int y = 0;
  <li ...>
  foreach(var r in right){
    if(x == y++)
      <li ...>
  }
  x++;
}

if确保内部循环仅输出 10% 的时间..


推荐阅读