C# - 嵌套循环

C# - Nested Loop

我正在做一个简单的 C# 练习。问题是我想显示如下输出:

输出

Sample 1 => a

Sample 2 => b

Sample 1 => c

Sample 2 => d

Sample 1 => e

Sample 2 => f

这是输入 1:

Sample 1 => 
Sample 2 => 

这是输入 2 :

a
b
c
d
e
f

这是我的代码

foreach (string input1 in RichTextBox1.Lines)
{
    foreach (string input2 in RichTextBox2.Lines)
    {
        RichTextBox3.Text += input1 + input2 + Environment.NewLine;
    }
}

但是它不起作用。任何人都可以帮助我。谢谢..

你的问题是你正在循环你的第二个输入......对于每个第一个输入!一次又一次,一次又一次。

所以:你只需要一个循环。这是一些入门的伪代码:

... first check that both line counts are equal
for (int i=0; i<linecount; i++) {
    RichTextBox3.Text += input1[i] + input2[i] + Environment.NewLine
}

其中 input1[i] 基本上转化为:例如,您必须将两个初始框的内容推送到一个数组中。

您需要两个序列的对应元素。所以你可以使用 LINQ 的 Zip method easily to achieve this result like this (Also by using String.Join 方法,我们没有使用任何循环。):

richTextBox3.Text = String.Join(Environment.NewLine, 
                    Enumerable.Repeat(richTextBox1.Lines, richTextBox2.Lines.Count())
                    .SelectMany(c => c).Zip(richTextBox2.Lines, (f, s) => f + " => " + s));

这是可以为您提供预期输出的代码:

int i = 0;
foreach (var input2 in RichTextBox2.Lines)
{
    string input1 = RichTextBox1.Lines[i % RichTextBox1.Lines.Length];
    RichTextBox3.Text += input1 + input2 + Environment.NewLine;
    i++;
}

你可以试试取模(%),用RichTextBox2.Lines作为外层循环

for (int i=0; i<RichTextBox2.Lines.Length; i++)
{
    var length = RichTextBox1.Lines.Length;
    RichTextBox3.Text += RichTextBox1.Lines[(i%length)] + RichTextBox2.Lines[i] + Environment.NewLine;
}

看起来很复杂,但即使有 Sample 3、Sample 4 等等,模数也能满足您的需求。