群中的奇怪的lambda表达式由

问题描述:

我接管了一些由离开我公司的人编写的代码。 他写了有我如何读完全糊涂了以下/解释群中的奇怪的lambda表达式由

public override IEnumerable<IEnumerable<ChangeContext>> GroupHistory(
     SqlConnection connection, long seqNum, int batchSize) 
    { 
     var history = GetHistory(connection, seqNum); 
     LastSequenceNumber = history.LastSequenceNumber; 
     Timestamp = history.Timestamp; 
     // grouping by broker and compacting changes 

     return history.Changes.OrderBy(c => c.SequenceNumber).GroupBy(c => c.CtbID, (l, c) => c).ToList() 
      .Select(group => ConvertChanges(group)); 
    } 

我感到困惑的是GROUPBY。 第一部分是clear c => c.CtbID - 它是CbbID上的groupby。 我不明白的是 - (l,c)=> c 这看起来像另一个带有2个参数的lambda?

+1

查看文档看到过载。 http://msdn.microsoft.com/en-us/library/bb549393.aspx – leppie 2013-04-26 15:31:51

这是一个元素选择器,采用id和由该id分组的组。所以你最终得到一系列的小组。

具体超载是

IEnumerable<TResult> GroupBy<TSource, TKey, TResult>(
    this IEnumerable<TSource> source, 
    Func<TSource, TKey> keySelector, 
    Func<TKey, IEnumerable<TSource>, TResult> resultSelector) 

http://msdn.microsoft.com/en-us/library/bb549393.aspx