您可以使用 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>
。
结果:
约翰、安娜、莫妮卡
如果您愿意,也可以使用 linq 执行此操作
var names = new List<string>() { "John", "Anna", "Monica" };
var joinedNames = names.Aggregate((a, b) => a + ", " + b);
虽然我更喜欢 Quartermeister 答案中的非 linq 语法,但我认为 Aggregate
可能执行得更慢(可能更多的字符串连接操作)。
Aggregate
更适合数学类型的运算。对于字符串,此操作类似于for each
ing,只是附加到一个效率非常低的字符串,因为您正在为列表中存在的每个项目创建一个新字符串。StringBuilder.AppendJoin()
看起来正是 op 需要的:var names = new List<string>() { "John", "Anna", "Monica" }; string joinedNames = new StringBuilder().AppendJoin(", ", names);
它与string.Join()
大致相同,我没有对此进行性能测试。如果您迫切需要一个没有聚合的 Linq 表单:var names = new List<string>() { "John", "Anna", "Monica" }; var joinedNames = new System.Text.StringBuilder(); names.ForEach(a => joinedNames.Append((joinedNames.Length > 0 ?", " : "") + a)); //joinedNames.ToString();