Ответ 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());