Подтвердить что ты не робот

Слить список <string []> в одну строку с одной строкой для каждого элемента

У меня есть экземпляр типа List<string[]>, я бы преобразовал его в строку с каждым string[] в новой строке. Я использую следующий запрос LINQ, чтобы сгладить список, но я не уверен, как добавить новую строку между каждыми string[], не увеличивая мой запрос во что-то гораздо более уродливое. Есть ли способ сделать это, не потрошив мой запрос и используя String.Join или IEnumberable.Aggregate внутри цикла foreach?

results.SelectMany(x => x).Aggregate((c, n) => c + ", " + n)
4b9b3361

Ответ 1

String.Join(Environment.NewLine, results.Select(a => String.Join(", ", a)));

Полный образец:

var results = new List<string[]> {
    new[]{"this", "should", "be", "on"},
    new[]{"other", "line"}
};

var result = String.Join(Environment.NewLine, 
                         results.Select(a => String.Join(", ", a)));

Результат:

this, should, be, on
other, line

UPDATE. Агрегация выполнена правильно - она ​​использует StringBuilder для создания отдельной строки в памяти

results.Aggregate(new StringBuilder(),
                  (sb, a) => sb.AppendLine(String.Join(",", a)),
                  sb => sb.ToString());

Ответ 2

results.Select(sa => sa.Aggregate((a, b) => a + ", " + b))
       .Aggregate((c, d) => c + Enviroment.NewLine + d);