我理解使用lambda函数作为(x => x.Count() == 1)
等过滤器,但(x => x)
的目的是什么?当我把它拿出来时,代码没有编译,我能找到的lambda函数的每个例子似乎都用它来过滤一行而不是没有lambda的多行。
List<Tuple<int, int>> regVals = ReadRegValCollection.SelectMany(x => x).ToList();
此gem的目的是将列表列表展平为列表
答案 0 :(得分:13)
x => x
是一个lambda表达式,它返回它提供的任何参数。
它等同于声明为
的方法public T Identity<T>(T item)
{
return item;
}
它通常与SelectMany
方法一起使用,将声明为IEnumerable<IEnumerable<T>>
的集合展平为IEnumerable<T>
。
SelectMany
需要与Func<IEnumerable<TSource>, IEnumerable<TResult>>
匹配的委托。如果来源为IEnumerable<IEnumerable<T>>
并且您希望结果为IEnumerable<T>
,则不必对源集合元素进行投影,因为它们已经是IEnumerable<TResult>
。