使用 Linq 在值之间添加逗号

Posted

技术标签:

【中文标题】使用 Linq 在值之间添加逗号【英文标题】:Add comma between values by using Linq 【发布时间】:2013-10-06 17:17:16 【问题描述】:

我的值来自 ComboBox:

2|722|742|762|77

我删除不必要的字符如下:

foreach (var item in checkListBox)

    string[] list = item.Split(
        new string[]  "2|" ,
        StringSplitOptions.RemoveEmptyEntries);

我的列表值结果:

"72"
"74"
"76"
"77"

我的问题是:

如何在 1 行(彼此相邻)中获取所有上述值,并用 逗号 分隔,如下所示:

72,74,76,77

?

【问题讨论】:

【参考方案1】:

听起来你只是想要string.Join

string commaSeparated = string.Join(",", list);

(请注意,这不是 LINQ 的一部分 - 它与连接多个序列的“连接”类型不同。它使用分隔符将多个字符串连接在一起。)

虽然您可以根据当前接受的答案在单个语句中执行此操作,但我个人会考虑保留您现有的语句并将其作为单独的步骤。它使代码更易于阅读和调试。

【讨论】:

【参考方案2】:
String.Join(",",list);​​​​​​​​​​​​​​​​​​​​​​​​​

虽然:a) 这不是 Linq。 b) 正如另一个答案中提到的,在这种情况下使用Replace 会更简单。

使用 Linq:

list.Select(s => s + ",").Aggregate((s, q) => s + q).TrimEnd(',');

【讨论】:

【参考方案3】:

怎么样

var result = string.Join(",", item.Split(new string[]  "2|" , StringSplitOptions.RemoveEmptyEntries));

【讨论】:

【参考方案4】:

直接使用Replace即可:

string input = "2|722|742|762|77";
var result = input.Replace("2|",",").Trim(',');

【讨论】:

【参考方案5】:

如其他答案中所述,string.Join 是此处应使用的内容。但是,如果您坚持使用 LINQ:

var result = list
    .Skip(1)
    .Aggregate(
        list.FirstOrDefault() ?? string.Empty,
        (total, current) => total + "," + current);

【讨论】:

以上是关于使用 Linq 在值之间添加逗号的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 LINQ 查找包含 2 个逗号分隔的字符串的匹配项

使用 LINQ/lambdas 构建以逗号分隔的内部异常消息字符串 [重复]

以动态方式在字符串中删除和添加逗号

在较长的数字之间添加逗号[重复]

如何匹配在linq中具有多个用逗号分隔的整数值的列?

Thymeleaf th:each 在元素之间添加逗号