Список C# для строки с разделителем


есть ли функция в C# для быстрого преобразования некоторой коллекции в строку и отдельные значения с разделителем?

например:

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

3 399

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