我有一个 List<string[]>
类型的实例我想将其转换为每个 string[]
的字符串在换行符上。我正在使用以下 LINQ 查询来展平列表,但是我不确定如何在每个 string[]
之间添加新行没有将我的查询扩展到更丑陋的东西。有没有办法在不破坏我的查询和使用 String.Join
的情况下做到这一点或 IEnumberable.Aggregate
在 foreach
里面循环?
results.SelectMany(x => x).Aggregate((c, n) => c + ", " + n)
最佳答案
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
更新 这是正确的聚合 - 它使用 StringBuilder在内存中构建单个字符串
results.Aggregate(new StringBuilder(),
(sb, a) => sb.AppendLine(String.Join(",", a)),
sb => sb.ToString());
关于c# - 将 List<string[]> 展平为单个字符串,每个元素一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18153678/