【问题标题】:Linq Aggregate functionLinq 聚合函数
【发布时间】:2010-05-02 15:18:38
【问题描述】:

我有一个类似的列表

“测试”、“bla”、“某事”、“其他”

但是当我在它上面使用 Aggrate 并同时调用一个函数时,在我看来,在 2 次“迭代”之后,第一次的结果会被传入?

我正在使用它:

myList.Aggregate((current, next) => someMethod(current) + ", "+ someMethod(next));

虽然我在 someMethod 函数中放置了一个断点,在该函数中对 myList 中的信息进行了一些转换,但我注意到在第三次调用之后,我从以前的转换中得到了一个结果作为输入参数。

【问题讨论】:

  • 我无法理解这里的问题;我建议您发布您正在使用的代码以及对预期/实际结果的描述。
  • @Aaronaught 这并不神秘(如果您使用过 Aggregate),我认为 OP 只是对聚合函数的参数感到困惑

标签: linq aggregate


【解决方案1】:

这就是它的工作方式。

你所标记的当前,它的意思是到目前为止已经积累的所有内容。在第一次调用时,种子是第一个元素。

你可以这样做:

var res = myList
   .Aggregate(String.Empty, (accumulated, next) => accumulated+ ", "+ someMethod(next))
   .Substring(2);//take out the first ", "

这样,您只需在每个元素上应用一次 someMethod。

【讨论】:

    【解决方案2】:

    如果我的列表是一个字符串列表,并且我只想返回/操作某些项目,我通常会这样做:

         var NewCollection = MyStringCollection
                                 //filter with where clause
                                 .Where(StringItem => StringItem == "xyz"
                                 //select/manipulate with aggregate
                                 .Aggregate(default(string.empty), (av, e) =>
                                 {
                                     //do stuff
                                     return av ?? e;
                                 });
    

    【讨论】:

      猜你喜欢
      • 2011-04-08
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-31
      • 2019-09-21
      相关资源
      最近更新 更多