.Net - 将输出字符串中列表的所有项连接在一起

时间:2010-04-21 03:33:39

标签: c# linq string .net-3.5

如何编写从List中选择项目并将它们连接在一起的Linq表达式(或其他任何内容)?

实施例

IList<string> data = new List<string>();

data.Add("MyData1");
data.Add("MyData2");

string result = //some linq query... I try data.Select(x => x + ",");

//result = "MyData1, MyData2"

4 个答案:

答案 0 :(得分:67)

为什么不选择(String.Join Method

string joined = String.Join(",", data.ToArray());

但如果必须是LINQ,你可以尝试

string joinedLinq = data.Aggregate((i, j) => i + "," + j);

答案 1 :(得分:12)

如果你坚持使用LINQ

,你可能会想要使用Aggregate()
IList<int> data = new List<int>();

data.Add(123);
data.Add(456);

var result = data.Select(x => x.ToString()).Aggregate((a,b) => a + "," + b);

我不推荐这个,因为我发现如果列表包含零项目,这将会失败 - 或者如果它只有1个项目。我忘了,但它都失败了: - )

String.Join(...) is the best way

在上面的示例中,数据类型不是字符串,您可以这样做:

string.Join(",", data.Select(x => x.ToString()).ToArray())

答案 2 :(得分:3)

Anthony Pegram写道String.Join<T>(delimiter, IEnumerable<T>)是.NET 4中最好的解决方案!

答案 3 :(得分:1)

当您需要将列表加入单个聚合对象时,可以使用聚合。

string s = "";
if(data.Count > 0)
  s = data.Aggregate((a, b) => a + ',' + b);