0

我正在接管一些由离开我公司的人编写的代码。他写了以下内容,这让我完全不知道如何阅读/解释

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。第一部分是明确的 c => c.CtbID - 这是 CtbID 上的 groupby。我不明白的是 - (l, c) => c 这看起来像另一个有 2 个参数的 lambda?

4

1 回答 1

3

那是一个元素选择器,采用 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

于 2013-04-26T15:32:32.623 回答