为什么这个简单的LINQ表达式不起作用?

时间:2014-08-21 21:10:39

标签: c# linq

这一定很简单,但我不明白为什么不允许这样做:

var testList = new List<int> { 2, 3, 400, 304, 50, 41 };
testList.Select(x => Console.WriteLine(x));

但这很好:

testList.Select(x => x * 2);

我在哪里误解LINQ导致这种混乱?

2 个答案:

答案 0 :(得分:9)

问题是您传递给Select()的函数必须返回一个值,因为Select()的目的是将序列的元素投影到其他值中。但是Console.WriteLine(x)返回void(没有值)。

答案 1 :(得分:8)

.Select需要Func<TSource, TResult>(一个带TSource并返回TResult的lambda)。

由于Console.WriteLinevoid,因此您的lambda不会返回任何内容,因此无法满足要求。