情况1
var numbers = new List<int>();
numbers.Add (1);
IEnumerable<int> query = numbers.Select (n => n * 10); // Build query
numbers.Add (2);
//Use or execute query
Run Code Online (Sandbox Code Playgroud)
案例2
var numbers = new List<int>() { 1, 2 };
numbers.Add(4);
List<int> query = numbers
.Select (n => n * 10)
.ToList(); // Executes immediately into a List<int>
numbers.Add(3);
numbers.Clear();
//Use or execute query
Run Code Online (Sandbox Code Playgroud)
为什么在第一种情况下查询包含1,2
在第二种情况下查询只包含1,2,4但不包含3,是因为我们正在调用.ToList()方法.
这是因为在你开始枚举结果集之前不会执行查询(通过调用.ToArray(),. ToList(),或者只是编写一个foreach)
IEnumerable<int> query = numbers.Select (n => n * 10);
Run Code Online (Sandbox Code Playgroud)
没有执行任何事情.这是LINQ的懒惰本质.
| 归档时间: |
|
| 查看次数: |
483 次 |
| 最近记录: |