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 );    

这不起作用,我只是不明白这是如何工作的。在什么情况下我应该定义TSourceTResult,在这种情况下它们是什么?

提前感谢!

enumerable的lambda表达式

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需要记住的两个重要的事情:

  1. 碱基序列的元素(几乎总是)修改。从旧序列创建新序列。
  2. 您编写的查询是惰性求值的。除非你在foreach循环中使用它们,或者调用.ToList(), .ToArray()等,否则你不会得到结果。