组合2个列表的最佳方法

时间:2017-05-28 04:08:48

标签: c# list linq

我有以下2个列表:

List<string> a = new List<string>()
{
    "a",
    "b"
};

List<string> b = new List<string>()
{
    "c",
    "d"
};

ab结合起来以获得以下内容的最佳方式是什么:

{
    "ac",
    "ad",
    "bc",
    "bd"
};

是否有LINQ功能可以让我们执行上述操作?

2 个答案:

答案 0 :(得分:3)

我不知道要求“最佳方式”是提出问题的最佳方式(不良双关语),因为通常会有多种方式。

你需要的是循环遍历第一个列表,然后,对于每个元素,循环遍历第二个列表,这样你就可以找到两者的每个组合。

一种可能的方法是使用LINQ的SELECT语句:

var combination = a.Select(first => b.Select(second => first + second))
                   .SelectMany(x => x)
                   .ToList();

您也可以使用几个嵌套的foreach循环,这些循环可能不如某些LINQ实现那样优雅,但很可能同样有效。

var combination = new List<string>();

foreach(var first in a)
    foreach (var second in b)
        combination.Add(first+second);

答案 1 :(得分:0)

可以尝试:

    List<string> c = new List<string>();

    for(int i=0; i<a.Count; i++){
        for(int j=0; j< b.Count; j++){
            c.Add(a[i]+b[j]);
        }
    }