C# 使用;foreach“;在字符串数组c中#

C# 使用;foreach“;在字符串数组c中#,c#,for-loop,C#,For Loop,早上好 我需要一个foreach循环来逐行打印下面的序列: 回路1 a0、a1、a2 回路2 b0、b1、b2 回路3 c0、c1、c2 这是我的第一篇帖子,很抱歉没有提供任何信息 private void按钮1\u单击(对象发送者,事件参数e) { int col0_int=0; var col0_elements=新字符串[]{“a0”、“b0”、“c0”、“d0”、“e0”、“f0”、“g0”、“h0”、}; IList col0_all=col0_元素; String[]col0_lis

早上好

我需要一个foreach循环来逐行打印下面的序列:

回路1 a0、a1、a2

回路2 b0、b1、b2

回路3 c0、c1、c2

这是我的第一篇帖子,很抱歉没有提供任何信息

private void按钮1\u单击(对象发送者,事件参数e)
{
int col0_int=0;
var col0_elements=新字符串[]{“a0”、“b0”、“c0”、“d0”、“e0”、“f0”、“g0”、“h0”、};
IList col0_all=col0_元素;
String[]col0_list=新字符串[col0_all.Count];
List col0_each=新列表();
foreach(col0_元素中的字符串元素)
{
col0_列表[col0_int++]=元素;
col0_每个。添加(元素);
}
int col1_int=0;
var col1_elements=新字符串[]{“a1”、“b1”、“c1”、“d1”、“e1”、“f1”、“g1”、“h1”、};
IList col1_all=col1_元素;
String[]col1_list=新字符串[col1_all.Count];
List col1_each=新列表();
foreach(col1_元素中的字符串元素)
{
col1_list[col1_int++]=元素;
每列1_。添加(元素);
}
int col2_int=0;
var col2_elements=新字符串[]{“a2”、“b2”、“c2”、“d2”、“e2”、“f2”、“g2”、“h2”、};
IList col2_all=col2_元素;
String[]col2_list=新字符串[col2_all.Count];
List col2_each=新列表();
foreach(col2_元素中的字符串元素)
{
col2_列表[col2_int++]=元素;
每个col2_.添加(元素);
}
//循环脚本在这里
}

假设所有数组长度相等:

    for (int i = 0; i < col0_list.Length; i++)
    {
        Console.WriteLine($"{col0_all[i]},{col1_all[i]},{col2_all[i]}");
    }
for(int i=0;i
如果您可以确保三个列表始终在正确的位置包含所需的元素,则快速解决方案是使用LINQ扩展方法两次:

var results = col0_elements.Zip(col1_elements, (x, y) => $"{x}, {y}")
                           .Zip(col2_elements, (x, y) => $"{x}, {y}");
这将生成一个包含以下内容的
IEnumerable
(您可以在其上循环):

{
    "a0, a1, a2",
    "b0, b1, b2", 
    "c0, c1, c2", 
    "d0, d1, d2", 
    "e0, e1, e2", 
    "f0, f1, f2", 
    "g0, g1, g2",
    "h0, h1, h2"
}

您可以获得带有for循环的:

for (int index = 0; index < col0_each.Count; index++)
{
    string col0String = col0_each[index];
    string col1String = col1_each[index];
    string col2String = col2_each[index];

    (print as desired);
}
for(int index=0;index
此代码不包括任何错误检查,以确保每个列表足够长;它假定它们都是相同的长度


代码中有可以简化的额外列表,尽管这不是您所要求的。

您将事情复杂化了。 对于每个字符串数组,您正在创建一个空字符串数组和一个只有一个元素的列表。。。 使用这种方法,本质上就是创建一个字符串矩阵

var col0_elements = new string[] { "a0", "b0", "c0", "d0", "e0", "f0", "g0", "h0", };
var col1_elements = new string[] { "a1", "b1", "c1", "d1", "e1", "f1", "g1", "h1", };
var col2_elements = new string[] { "a2", "b2", "c2", "d2", "e2", "f2", "g2", "h2", };

IList<string[]> all_elements = new List<string[]>{ col0_elements, col1_elements, col2_elements };

for (int i = 0; i < col0_elements.Length; i++) // Row iteration
{
    foreach (var cell in all_elements) // Cell iteration
    {
        Console.Write(cell[i]);   
    }
    Console.WriteLine();
}
var col0_elements=新字符串[]{“a0”、“b0”、“c0”、“d0”、“e0”、“f0”、“g0”、“h0”、};
var col1_elements=新字符串[]{“a1”、“b1”、“c1”、“d1”、“e1”、“f1”、“g1”、“h1”、};
var col2_elements=新字符串[]{“a2”、“b2”、“c2”、“d2”、“e2”、“f2”、“g2”、“h2”、};
IList all_elements=新列表{col0_elements,col1_elements,col2_elements};
for(int i=0;i
欢迎来到SO!你有什么问题?你会犯什么错误?什么不起作用?请帮助我们缩小范围,以便我们可以帮助您解决问题。为什么要为3个阵列中的每个阵列创建一个具有相同值的重复阵列和列表?如何打印(消息框警报或在控制台中打印)?我假设您使用的是winform?我使用这种方式通过Selenium从不同页面收集数据。。没有错误,但我打印的方式只是拉a0,b0,而不是我想要的a0,a1。。在messagebox中打印。。欢迎所有评论