我正在接管一些离开我公司的人编写的代码。 他写了以下内容,让我对如何阅读/解释
感到困惑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 =&gt; c.CtbID - 这是CtbID上的groupby。 我不明白的是 - (l,c)=&gt; C 这看起来像另一个有2个参数的lambda?
答案 0 :(得分:3)
这是一个元素选择器,取id和由该id分组的组。所以你最终得到了一系列的小组。
具体的重载是
IEnumerable<TResult> GroupBy<TSource, TKey, TResult>(
this IEnumerable<TSource> source,
Func<TSource, TKey> keySelector,
Func<TKey, IEnumerable<TSource>, TResult> resultSelector)