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

时间:2015-04-18 03:28:23

标签: c# lambda

我理解使用lambda函数作为(x => x.Count() == 1)等过滤器,但(x => x)的目的是什么?当我把它拿出来时,代码没有编译,我能找到的lambda函数的每个例子似乎都用它来过滤一行而不是没有lambda的多行。

List<Tuple<int, int>> regVals = ReadRegValCollection.SelectMany(x => x).ToList();

此gem的目的是将列表列表展平为列表

1 个答案:

答案 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>