我有一个列表,我希望用逗号分隔[]中的项目
输入为
List<string> inputString = new List<string>() { "1", "2", "3", "4" };
输出:
[1],[2],[3],[4]
有人能告诉我如何在没有foreach循环的情况下实现这一点吗。我想使用linq查询。
我已经尝试了以下步骤,但没有工作
inputString.Aggregate("", (str1, str2) => '[' + str1+ ']' + "," + '[' + str2+ ']');
有人能帮我吗?
您是否考虑在不使用LINQ
的情况下解决此问题?
如果是,则可以使用下一种方法:
List<string> inputString = new List<string>() { "1", "2", "3", "4" };
string output = "[" + string.Join("],[", inputString) + "]";
Join()
与Select()
相结合的方法
List<string> inputString = new List<string>() { "1", "2", "3", "4" };
string result = string.Join(",", inputString.Select(x => '[' + x + ']'));
或仅使用Join
string result = "[" + string.Join("],[", inputString) + "]";
您需要Select
方法,然后使用string.Join()
创建单个结果字符串
List<string> inputString = new List<string>() { "1", "2", "3", "4" };
var result = string.Join(",", inputString.Select(s => $"[{s}]"));
正如您最初尝试使用聚合:
var results = inputString.Select(x => "[" + x + "]")
.Aggregate((cur,next) => cur + "," + next);
现场演示
你的尝试不远了,结果是[[[1],[2]],[3]],[4]
元素1+元素2,然后元素1/2+元素3。等等。
在进行元素聚合之前,您只需要计算[x]
。
注:这不是最有效的连接方式,与字符串相比,这将是最糟糕的。加入
或者即使我们想要尽可能多的linq
var result = inputString.Select(el => $"[{el}],").Aggregate("",(el1,el2) => el1 + el2).TrimEnd(',');
使用字符串插值更简单。
string result = $"[{String.Join("],[", inputString)}]";