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

例如:

列出<string>names-->string names_together=“John,Anna,Monica”


当前回答

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

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

虽然我更喜欢Quartermeister的答案中的非linq语法,但我认为Aggregate可能执行得较慢(可能更多的字符串连接操作)。

其他回答

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

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

虽然我更喜欢Quartermeister的答案中的非linq语法,但我认为Aggregate可能执行得较慢(可能更多的字符串连接操作)。

您可以使用String.Join。如果您有List<String>,则可以首先调用ToArray:

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

在.NET4中,您不再需要ToArray,因为存在String.Join的重载,该重载需要IEnumerable<String>。

在较新版本的.NET中,不同的String.Join重载使用不同的方法来生成结果。这可能会影响代码的性能。

例如,那些接受IEnumerable的用户在后台使用StringBuilder。而接受数组的则使用了一个经过大量优化的数组和指针实现。

结果:

约翰、安娜、莫妮卡