我正在试图弄清楚如何开始使用linq和lambda表达式。
首先,如果有人可以指导我学习一些好的教程,那将非常感激。
其次:
我正在尝试使用Select方法选择所有等于特定值的值。
我注意到select可以用
定义Select<TSource,TResult>(...lambda expression...)
现在为此目的,我想选择所有等于5的数字。
int[] numbers = { 1, 2, 3, 4, 5, 5, 5, 6, 7, 8 };
IEnumerable<int> res = numbers.Select( x=>5 );
这不起作用,我只是不明白这是如何工作的。
我应该在什么情况下定义TSource
和TResult
,以及在这种情况下它们会是什么?
提前致谢!
答案 0 :(得分:14)
Select()
用于将旧序列的每个成员投影到新序列的新成员中。要进行过滤,请使用Where()
:
var evens = numbers.Where(x => x % 2 == 0);
var theFiveSequence = numbers.Where(x => x == 5);
使用Select()
的示例可能是将每个数字乘以2:
var doubledNumbers = numbers.Select(x => 2*x);
您也可以将这些方法组合在一起:
var doubledNumbersLessThanTen = numbers.Select(x => 2*x).Where(x < 10);
关于LINQ需要记住的两件重要事情:
foreach
循环中使用它们,或致电.ToList()
,.ToArray()
等之前,您不会从中获得结果。