C# 聚合多维数组

C# 聚合多维数组,c#,linq,aggregate,C#,Linq,Aggregate,试图产生一些乳胶表生成代码,大量镀金 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) + MIDRU

试图产生一些乳胶表生成代码,大量镀金

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
(我不推荐它,因为它可读性差,效率低得多),请尝试(未经测试):

尝试:

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

编辑

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


这是因为您使用的聚合错误。如果您查看,您将看到以下定义:

public static TSource Aggregate<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, TSource, TSource> func
)
如果您不想要尾随的中间规则换行符和已推荐的

我不确定这是否是最好的方法,但它应该是有效的

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

如果您这样做了。

这是因为您使用了错误的聚合。如果您查看,您将看到以下定义:

public static TSource Aggregate<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, TSource, TSource> func
)
如果您不想要尾随的中间规则换行符和已推荐的

我不确定这是否是最好的方法,但它应该是有效的

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

如果是的。

谢谢你提供的额外信息,我意识到我的预期结果用词是错误的,你是对的,我不想要后面的中间规则,但我认为将此标记为正确答案是不公平的,因为Ani先前的答案输出了我的(不正确的)预期结果。谢谢你提供的额外信息,我意识到我对预期结果的措辞是错误的,你是对的,我不想使用尾随的中间规则,但我认为将此标记为正确答案是不公平的,因为Ani先前的答案输出了我的(不正确的)预期结果。感谢这种简单的方式,我想看看是否可以仅使用聚合结果。。。看起来更具可读性的meI添加了一种聚合方式。如果我是你的话,我就不会走这条路了。感谢这种简单的方法,我想看看仅仅使用聚合是否可行。。。看起来更具可读性的meI添加了一种聚合方式。如果我是你,我就不会走那条路。