Как преобразовать IEnumerable <string>в одну строку через запятую? - PullRequest
45 голосов
/ 20 сентября 2011

Скажите, что для целей отладки я хочу быстро получить содержимое IEnumerable в одну строку с каждым строковым элементом через запятую. Я могу сделать это вспомогательным методом с циклом foreach, но это не весело и не кратко. Можно ли использовать Linq? Какой-нибудь другой короткий путь?

Ответы [ 6 ]

89 голосов
/ 20 сентября 2011
using System;
using System.Collections.Generic;
using System.Linq;

class C
{
    public static void Main()
    {
        var a = new []{
            "First", "Second", "Third"
        };

        System.Console.Write(string.Join(",", a));

    }
}
29 голосов
/ 20 сентября 2011
string output = String.Join(",", yourEnumerable);

Метод String.Join (String, IEnumerable

Объединяет члены созданной коллекции IEnumerable типа String, используя указанный разделитель между каждым членом.

9 голосов
/ 20 сентября 2011
collection.Aggregate("", (str, obj) => str + obj.ToString() + ",");
3 голосов
/ 20 сентября 2011
IEnumerable<string> foo = 
var result = string.Join( ",", foo );
1 голос
/ 22 сентября 2011

для объединения большого массива строк в строку, непосредственно не используйте +, используйте StringBuilder для итерации по одному или String.Join за один выстрел.

0 голосов
/ 01 июля 2019

(а) Настройте IEnumerable:

        // In this case we are using a list. You can also use an array etc..
        List<string> items = new List<string>() { "WA01", "WA02", "WA03", "WA04", "WA01" };

(b) Соедините IEnumerable Together в строку:

        // Now let us join them all together:
        string commaSeparatedString = String.Join(", ", items);

        // This is the expected result: "WA01, WA02, WA03, WA04, WA01"

(c) Для целей отладки:

        Console.WriteLine(commaSeparatedString);
        Console.ReadLine();
...