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

Mel*_*sus 35 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"
Run Code Online (Sandbox Code Playgroud)

Adr*_*der 71

为什么不去(String.Join方法)

string joined = String.Join(",", data.ToArray());
Run Code Online (Sandbox Code Playgroud)

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

string joinedLinq = data.Aggregate((i, j) => i + "," + j);
Run Code Online (Sandbox Code Playgroud)

  • @Melurus,也注意到.NET 4中的新内容,对.ToArray()的调用不是必需的,也不需要是字符串的集合.string.Join有一个接受`IEnumerable <T>`的重载. (5认同)

Sim*_*ver 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);
Run Code Online (Sandbox Code Playgroud)

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

String.Join(...) is the best way
Run Code Online (Sandbox Code Playgroud)

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

string.Join(",", data.Select(x => x.ToString()).ToArray())
Run Code Online (Sandbox Code Playgroud)

  • 如果枚举没有元素,它将抛出.检查计数== 0. (3认同)