C# List<string> to string with delimiter
C中是否有一个函数可以快速地将某些集合转换为字符串并用分隔符分隔值?
例如:
List names->string names_together ="John, Anna, Monica"
您可以使用String.Join。如果你有一个List,那么你可以先给ToArray打电话:
1 2
| List <string> names = new List <string>() {"John", "Anna", "Monica" };
var result = String.Join(",", names .ToArray()); |
在.NET 4中,您不再需要ToArray,因为String.Join的过载需要IEnumerable。
如果你愿意的话,你也可以和Linq一起做。
1 2
| var names = new List <string>() {"John", "Anna", "Monica" };
var joinedNames = names .Aggregate((a, b ) => a +"," + b ); |
号
尽管我更喜欢Quartermeister答案中的非linq语法,我认为Aggregate可能执行较慢(可能执行更多的字符串连接操作)。
- 谢谢你的快速回复,两个都可以。你说得对,我用秒表类做了一个小的性能测量,而linq的速度要慢得多:string.join(",",name.toarray());-->
- 是的,我认为Aggregate更适合数学类型的运算。对于字符串,此操作类似于for eaching,只是附加到一个效率非常低的字符串,因为您正在为列表中存在的每个项目创建一个新的字符串。
- 注意,如果容器为空,没有种子值的聚合将引发InvalidOperationException。使用种子版本聚合(seed,func)避免错误处理代码或条件检查。string.join不向空抛出,因此不需要种子或额外代码…另外,它不需要LINQ,而且语法更清晰。
- 如果使用StringBuilder,上面示例中的聚合可能工作得更快。不建议使用"+"执行多个串联。请参阅此处的备注部分(msdn.microsoft.com/en-us/library/&hellip;)