C#列表<string>用分隔符string

在C#中有一个函数来快速转换一些收集string和分隔值与分隔符?

例如:

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

你可以使用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); 

尽pipe我更喜欢Quartermeister的答案中的非linq语法,我认为Aggregate可能会执行较慢(可能更多的string连接操作)。

 List<string> targets = new List<string>(); var InboxChecked = true; var BannerChecked = false; var EmailChecked = true; if (InboxChecked) { targets.Add("Inbox"); } if (BannerChecked) { targets.Add("Banner"); } if (EmailChecked) { targets.Add("Email"); } var index = 0; if (targets.Any()) { var aggregate = targets.Aggregate((s1, s2) => { return ++index == targets.Count - 1 ? s1 + " and " + s2 : s1 + ", " + s2; }); // aggregate.Dump(); } // returns -> Inbox and Email