我有一个List<string[]>
类型的实例我想将它转换为换行符中每个string[]
的字符串。我正在使用以下LINQ查询来展平列表但是我不确定如何在每个string[]
之间添加新行而不将我的查询扩展为更丑陋的东西。有没有办法在不查询我的查询并在String.Join
循环中使用IEnumberable.Aggregate
或foreach
的情况下执行此操作?
results.SelectMany(x => x).Aggregate((c, n) => c + ", " + n)
答案 0 :(得分:44)
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());
答案 1 :(得分:3)
results.Select(sa => sa.Aggregate((a, b) => a + ", " + b))
.Aggregate((c, d) => c + Enviroment.NewLine + d);