C# 加入列表 - 对于列表 A 中的每个元素 - 添加列表 B 中的元素
C# Joining Lists - for each Element in List A - add element from List B
这在 foreach 循环中很容易 - 但我有几个列表...
示例:
var ListA = new List<string>() { "One", "Two" };
var ListB = new List<string>() { "Three", "Four" };
var ListC = new List<string>() { "Five", "Six" };
var ListD = new List<string>() { "Seven", "Eight" };
我的结果是这样的:
One, Three, Five, Seven
One, Three, Five, Eight
One, Three, Six, Seven
One, Three, Six, Eight
One, Four, Five, Seven
One, Four, Five, Eight
One, Four, Six, Seven
One, Four, Six, Eight
以此类推
这行得通,但让我印象深刻的是应该有更好的方法来做到这一点。
foreach (var item in ListA)
{
foreach (var item2 in ListB)
{
foreach (var item3 in ListC)
{
foreach (var item4 in ListD)
{
outputCombined.Append(item.Trim() + " " + ";" + " " + item2.Trim() + " " + ";" + " " + item3.Trim() + " " + ";" + " " + item4.Trim() + Environment.NewLine);
}
}
}
}
我想这个问题可能有 Linq 解决方案?
为了减少嵌套,您可以重复使用 from xxx in yyy
子句,这基本上转化为嵌套 SelectMany
调用。
var list1 = new List<string> { "One", "Two" };
var list2 = new List<string> { "Three", "Four" };
var list3 = new List<string> { "Five", "Six" };
var list4 = new List<string> { "Seven", "Eight" };
var query = from elem1 in list1
from elem2 in list2
from elem3 in list3
from elem4 in list4
select string.Join(", ", elem1, elem2, elem3, elem4);
打印query
的每个元素:
foreach (var elem in query) {
Console.WriteLine(elem);
}
产出
One, Three, Five, Seven
One, Three, Five, Eight
One, Three, Six, Seven
One, Three, Six, Eight
One, Four, Five, Seven
One, Four, Five, Eight
One, Four, Six, Seven
One, Four, Six, Eight
Two, Three, Five, Seven
Two, Three, Five, Eight
Two, Three, Six, Seven
Two, Three, Six, Eight
Two, Four, Five, Seven
Two, Four, Five, Eight
Two, Four, Six, Seven
Two, Four, Six, Eight
这在 foreach 循环中很容易 - 但我有几个列表...
示例:
var ListA = new List<string>() { "One", "Two" };
var ListB = new List<string>() { "Three", "Four" };
var ListC = new List<string>() { "Five", "Six" };
var ListD = new List<string>() { "Seven", "Eight" };
我的结果是这样的:
One, Three, Five, Seven
One, Three, Five, Eight
One, Three, Six, Seven
One, Three, Six, Eight
One, Four, Five, Seven
One, Four, Five, Eight
One, Four, Six, Seven
One, Four, Six, Eight
以此类推
这行得通,但让我印象深刻的是应该有更好的方法来做到这一点。
foreach (var item in ListA)
{
foreach (var item2 in ListB)
{
foreach (var item3 in ListC)
{
foreach (var item4 in ListD)
{
outputCombined.Append(item.Trim() + " " + ";" + " " + item2.Trim() + " " + ";" + " " + item3.Trim() + " " + ";" + " " + item4.Trim() + Environment.NewLine);
}
}
}
}
我想这个问题可能有 Linq 解决方案?
为了减少嵌套,您可以重复使用 from xxx in yyy
子句,这基本上转化为嵌套 SelectMany
调用。
var list1 = new List<string> { "One", "Two" };
var list2 = new List<string> { "Three", "Four" };
var list3 = new List<string> { "Five", "Six" };
var list4 = new List<string> { "Seven", "Eight" };
var query = from elem1 in list1
from elem2 in list2
from elem3 in list3
from elem4 in list4
select string.Join(", ", elem1, elem2, elem3, elem4);
打印query
的每个元素:
foreach (var elem in query) {
Console.WriteLine(elem);
}
产出
One, Three, Five, Seven
One, Three, Five, Eight
One, Three, Six, Seven
One, Three, Six, Eight
One, Four, Five, Seven
One, Four, Five, Eight
One, Four, Six, Seven
One, Four, Six, Eight
Two, Three, Five, Seven
Two, Three, Five, Eight
Two, Three, Six, Seven
Two, Three, Six, Eight
Two, Four, Five, Seven
Two, Four, Five, Eight
Two, Four, Six, Seven
Two, Four, Six, Eight