c# - 将 List<string[]> 展平为单个字符串,每个元素一行

标签 c# .net string linq

我有一个 List<string[]> 类型的实例我想将其转换为每个 string[] 的字符串在换行符上。我正在使用以下 LINQ 查询来展平列表,但是我不确定如何在每个 string[] 之间添加新行没有将我的查询扩展到更丑陋的东西。有没有办法在不破坏我的查询和使用 String.Join 的情况下做到这一点或 IEnumberable.Aggregateforeach 里面循环?

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/

相关文章:

c# - 从 WSDL 生成 ServiceStack 服务

c# - 如果查询未返回任何内容,linq 选择项的默认值

c# - UserControl (*.ascx) 中的自定义属性?

c# - 包装第 3 方类 c# 的最佳方法是什么

c# - TPL 数据流是并行的或有序的,但不能同时是并行的和有序的

c# - 如何在 NUnit Assert.That 子句中测试 lambda 表达式的异常和返回值

java - 为什么 Integer.parseInt() 从字符串值中删除 0?

java - 将 String 转换为 java 中的运行时代码

c - 生成随机 n 字节 Base64 字符串后的不可打印字符

c# - 我可以使用 Sql Server Express 复制和使用 mdf 文件吗?