SelectMany的目的是什么(x => x)?

Swi*_*Run 5 c# lambda

我理解使用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>.