我理解使用lambda函数作为过滤器等(x => x.Count() == 1),但目的是(x => x)什么?当我把它拿出来时,代码不能编译,我能找到的lambda函数的每个例子似乎都用它来过滤一行而不是没有lambda的多行.
List<Tuple<int, int>> regVals = ReadRegValCollection.SelectMany(x => x).ToList();
Run Code Online (Sandbox Code Playgroud)
此gem的目的是将列表列表展平为列表
Mar*_*zek 14
x => x 是一个lambda表达式,它返回它提供的任何参数.
它等同于声明为的方法
public T Identity<T>(T item)
{
return item;
}
Run Code Online (Sandbox Code Playgroud)
它通常与使用SelectMany方法拉平声明为收集IEnumerable<IEnumerable<T>>到IEnumerable<T>.
SelectMany需要一个匹配的代表Func<IEnumerable<TSource>, IEnumerable<TResult>>.如果源是IEnumerable<IEnumerable<T>>并且您希望结果IEnumerable<T>不是必须在源集合元素上进行投影,就像它们已经存在一样IEnumerable<TResult>.