Список C# для строки с разделителем
есть ли функция в C# для быстрого преобразования некоторой коллекции в строку и отдельные значения с разделителем?
например:
List<string> names -->string names_together = "John, Anna, Monica"
3 ответа:
можно использовать
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);хотя я предпочитаю синтаксис non-linq в ответе Quartermeister, и я думаю
Aggregateможет выполняться медленнее (возможно, больше операций конкатенации строк).
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