linq中用逗号分隔的带括号的列表项

  • 本文关键字:列表 分隔 linq c# list linq
  • 更新时间 :
  • 英文 :


我有一个列表,我希望用逗号分隔[]中的项目

输入为

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)}]";

最新更新