群中的奇怪的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?
答
这是一个元素选择器,采用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 – leppie 2013-04-26 15:31:51