C# List<string> to string with delimiter

问题描述 投票:0回答:3

C#中有没有一个函数可以快速将一些集合转换为字符串并用分隔符分隔值?

例如:

List<string> names
-->
string names_together = "John, Anna, Monica"

c# string list delimiter
3个回答
1609
投票

您可以使用

String.Join
。如果你有一个
List<string>
那么你可以先打电话给
ToArray

List<string> names = new List<string>() { "John", "Anna", "Monica" };
var result = String.Join(", ", names.ToArray());

在 .NET 4 中,您不再需要

ToArray
,因为
String.Join
的重载需要
IEnumerable<string>
.

在较新版本的 .NET 中,不同的

String.Join
重载使用不同的方法来产生结果。这可能会影响代码的性能。

例如,那些接受

IEnumerable
的人在幕后使用
StringBuilder
。接受数组的那个使用了一个高度优化的数组和指针实现。

结果:

约翰、安娜、莫妮卡


128
投票

如果愿意,您也可以使用 linq 执行此操作

var names = new List<string>() { "John", "Anna", "Monica" };
var joinedNames = names.Aggregate((a, b) => a + ", " + b);

尽管我更喜欢 Quartermeister 的回答中的非 linq 语法,而且我认为

Aggregate
可能执行得更慢(可能是更多的字符串连接操作)。


0
投票

我在所有项目中使用的基于已接受答案的扩展方法:

public static string StringJoin(this IEnumerable<string> values, string separator)
{
    return string.Join(separator, values);
}

用法:

var result = names.StringJoin(", ");

附言永远不要为此使用

Aggregate
,它比string.Join
两个数量级

© www.soinside.com 2019 - 2024. All rights reserved.