c# - 聚合多维数组

标签 c# linq aggregate

尝试模块化一些 latex 表格生成代码,大量镀金。

var MIDRULE = @"\\\midrule";

var a = new []{new []{"a", "b", "c"}, new []{"1", "2", "3"}, new []{"alpha", "beta", "gamma"}};

a.Dump();

a.Aggregate(
        (x,y) => x.Aggregate((i,j) => i + "&" + j) 
           + MIDRULE + Environment.NewLine
           + y.Aggregate((k,l)=>k+"&"+l)).Dump();

预期结果:

a&b&c\\\midrule
1&2&3\\\midrule
alpha&beta&gamma\\\midrule

实际结果:

Cannot implicitly convert type 'string' to 'string[]'

如果可能的话,我想用一行聚合命令来做到这一点,我已经可以在嵌套循环或其他各种方式中做到这一点,我有兴趣更好地了解聚合。

最佳答案

尝试:

string.Concat(a.Select(inner => string.Join("&", inner)
                                + MIDRULE + Environment.NewLine))
      .Dump();

注意不要将 Join 用于外部调用,因为您希望将 MIDRULE + Environment.NewLine 附加到每个字符串,包括最后一个字符串。

编辑:

由于您热衷于在此处使用 Aggregate(我不推荐它,因为它的可读性较差且效率较低),请尝试(未经测试):

a.Aggregate(string.Empty, (x, y) => x 
                                  + y.Aggregate(string.Empty,
                                                (k, l) => k + "&" + l) 
                                  + MIDRULE 
                                  + Environment.NewLine)
 .Dump();

关于c# - 聚合多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12683734/

相关文章:

c# - WebApi(MVC 5) PUT 方法不允许使用 HTTP/1.1 405 方法

LINQ Where(predicate) vs. FirstOrDefault(predicate)

apache-spark - 如果某些值为 null,则在 SUM 中返回 null

mysql - SQL Group By查询——获取聚合函数的相关字段

c# - 为什么绑定(bind)不适用于动画?

c# - 我如何获取一个字符串并每次从数组中返回一个字符串?

c# - 无法使我的服务调用 ServiceKnownType 帮助程序方法

mysql - 需要帮助解决 SQL

c# - Linq To 实体,在左连接之前在表上使用 where 子句

php - 聚合和非聚合列的Postgresql用法,分组依据