enumerable的lambda表达式
本文关键字:表达式 lambda enumerable | 更新日期: 2023-09-27 18:05:43
我想弄清楚如何开始使用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
,在这种情况下它们是什么?
提前感谢!
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()
等,否则你不会得到结果。