如何使用Aggregate方法将两个List <string>连接到单个字符串

时间:2017-07-13 13:58:01

标签: c# string linq

我有两个字符串列表。我的经理的要求是使用LINQ将列表和输出连接成一个字符串。

List<string> upper = new List<string> { "A", "B", "C" };
List<string> lower = new List<string> { "a", "b", "c" };

输出应如下所示:     // string output =“A:a,B:b,C:c”

为了实现这一点,我需要使用LINQ Aggregate方法或其他可用的扩展方法。请帮忙

3 个答案:

答案 0 :(得分:3)

您正在寻找方法Zip,并可能与string.Join

结合使用
Console.WriteLine(string.Join(",", upper.Zip(lower, (u, l) => u + ":" + l)));

输出:A:a,B:b,C:c

答案 1 :(得分:1)

您需要Zip方法而不是Aggregate

如果您希望结果为List String

List<string> result = upper.Zip(lower, (first, second) => first + ":" + second).ToList();

如果您希望将结果作为字符串,则可以使用String.Join方法,如下所示:

string output = string.Join(",", result);

Aggregate方法正如您所希望的那样:

string output = result.Aggregate((f, s) => f + "," + s);

答案 2 :(得分:0)

使用Enumerable.Zip

def prod(x):
  """ Recursive approach with behavior of np.prod over axis 0 """
  if len(x) is 1:
      return x
  for i, a_ in enumerate(x.pop()):
      x[0][i] *= a_
  return prod(x)

现在将其转换为单个字符串:

var results = upper.Zip(lower, (up, low) => $"{up}:{low}");