在c#中的字符串聚合

时间:2016-04-07 19:09:18

标签: c# linq

我有以下代码:

string[] curries = { "abc", "ab", "abcd" };
var c = curries.Aggregate<string,string,int>("Some curries ",(a,b)=>a +" " +b,a=>a.Length);

Console.WriteLine(c);

输出是25.请有人解释一下吗?

3 个答案:

答案 0 :(得分:4)

您的代码与以下内容相同。

string[] curries = { "abc", "ab", "abcd" };
string x = "Some curries ";
foreach (var curry in curries)
{
   x = x + " " + curry;
}
var c = x.Length;

我认为代码是自我解释的!

在foreach循环x变量之后将有一个长度为25的字符串"Some curries abc ab abcd"

答案 1 :(得分:1)

Aggregate(IEnumerable,Func)方法使得对一系列值执行计算变得简单。此方法通过为源中的每个元素调用func一次来工作。每次调用func时,Aggregate(IEnumerable,Func)都会传递序列中的元素和聚合值(作为func的第一个参数)。 source的第一个元素用作初始聚合值。 func的结果替换了先前的聚合值。 Aggregate(IEnumerable,Func)返回func的最终结果。

因此,“一些咖喱”,“abc”,“ab”,“abcd”和3个空格“”被连接起来。因此总长度变为25。

答案 2 :(得分:0)

你想要完成什么?只是附上咖喱串?假设这是你想要的,下面的聚合函数可以工作。

var c = curries.Aggregate("Some curries", (current, str) => current + (" " + str));

如果你想要字符串的长度,你可以只检查聚合字符串的长度。