【问题标题】:C# Joining Lists - for each Element in List A - add element from List B [duplicate]C#加入列表-对于列表A中的每个元素-从列表B中添加元素[重复]
【发布时间】:2022-01-21 16:21:00
【问题描述】:

这在 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 解决方案?

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    为了减少嵌套,您可以重复使用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
    

    【讨论】:

      猜你喜欢
      • 2022-08-11
      • 2014-06-09
      • 1970-01-01
      • 2023-03-08
      • 2022-08-19
      • 1970-01-01
      • 2018-03-09
      • 2021-02-18
      • 1970-01-01
      相关资源
      最近更新 更多