Enumerable.Select的lambda表达式

era*_*zap 2 c# linq lambda

我想弄清楚如何开始使用linq和lambda表达式.

首先,如果有人可以指导我学习一些好的教程,那将非常感激.

其次:

我正在尝试使用Select方法选择所有等于特定值的值.

我注意到select可以定义为

Select<TSource,TResult>(...lambda expression...)  
Run Code Online (Sandbox Code Playgroud)

现在为此我想选择所有等于5的数字.

int[] numbers = { 1, 2, 3, 4, 5, 5, 5, 6, 7, 8 };
IEnumerable<int> res = numbers.Select( x=>5 );    
Run Code Online (Sandbox Code Playgroud)

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

提前致谢!

dle*_*lev 14

Select()用于将旧序列的每个成员投影到新序列的新成员中.要进行过滤,请使用Where():

var evens = numbers.Where(x => x % 2 == 0);
var theFiveSequence = numbers.Where(x => x == 5);
Run Code Online (Sandbox Code Playgroud)

使用的示例Select()可能是将每个数字乘以2:

var doubledNumbers = numbers.Select(x => 2*x);
Run Code Online (Sandbox Code Playgroud)

您也可以将这些方法组合在一起:

var doubledNumbersLessThanTen = numbers.Select(x => 2*x).Where(x < 10);
Run Code Online (Sandbox Code Playgroud)

关于LINQ需要记住的两件重要事情:

  1. 基本序列的元素(几乎总是)不被修饰.您可以从旧序列创建新序列.
  2. 您编写的查询被懒惰地评估.直到你在使用他们,你不会从他们那里得到的结果foreach循环,或致电.ToList(),.ToArray()等等.