如何编写从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"
答案 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);