我理解lambda函数的用法,例如(x => x.Count() == 1)
作为过滤器,但是(x => x)
的目的是什么?当我把它去掉时,代码无法编译,我能找到的所有lambda函数示例似乎都使用它来在一行中过滤而不是多行。
List<Tuple<int, int>> regVals = ReadRegValCollection.SelectMany(x => x).ToList();
这个 gem 的目的是将一个列表中嵌套的列表扁平化为一个列表。
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>
。
x => x
返回 x(也称为恒等函数),因此要在上下文中查看。SelectMany是做什么的? 这就是问题/答案 - 文档应该提供足够的信息。无论是x => x
还是x => f(x)
都没有关系。 - user2864740SelectMany()
方法... 然后再重新评估它是否令人困惑。 - Jeff Mercadoconcat
函数... - Willem Van Onsem