Этот код создаст результат в примерах:
{
var result = new List<string[]>();
string[] column1 = { "jim west", "Le tomo", "Sara brown" };
string[] column2 = { "aaa", "bbb" };
string[] column3 = { "12345" };
foreach(string c1 in column1)
{
for(int i = 0; i < column2.Length; i++)
{
string[] toAdd = { c1, column2[i], column3.Length> i ? column3[i] : "" };
result.Add(toAdd);
}
}
Причина использования for вместо foreach заключается в том, что colums2 и colums3 связаны друг с другом в примерах. Если они не должны быть связаны друг с другом; 3 вложенных foreach сделают свое дело так:
var result = new List<string[]>();
string[] column1 = { "jim west", "Le tomo", "Sara brown" };
string[] column2 = { "aaa", "bbb" };
string[] column3 = { "12345" };
foreach(string c1 in column1)
{
foreach(string c2 in column2)
{
foreach(string c3 in column3)
{
string[] toAdd = { c1, c2, c3 };
result.Add(toAdd);
}
}
}