Список 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