这一定很简单,但我不明白为什么不允许这样做:
var testList = new List<int> { 2, 3, 400, 304, 50, 41 };
testList.Select(x => Console.WriteLine(x));
但这很好:
testList.Select(x => x * 2);
我在哪里误解LINQ导致这种混乱?
答案 0 :(得分:9)
问题是您传递给Select()
的函数必须返回一个值,因为Select()
的目的是将序列的元素投影到其他值中。但是Console.WriteLine(x)
返回void(没有值)。
答案 1 :(得分:8)
.Select
需要Func<TSource, TResult>
(一个带TSource
并返回TResult
的lambda)。
由于Console.WriteLine
为void
,因此您的lambda不会返回任何内容,因此无法满足要求。