简介
Linq中的绝大多数查询运算符都有延迟执行的特性,查询并不是在查询创建的时候执行,而是在遍历的时候执行
实例:
public void Test2()
{
List<int> items = new List<int>() { -1, 1, 3, 5 };
IEnumerable<int> items2 = items.Where(x => x > 0);
foreach (int item in items2)
{
Console.WriteLine(item);
}
items.Add(40);
Console.WriteLine("----------------");
foreach (int item in items2)
{
Console.WriteLine(item);
}
Console.WriteLine("*****************");
}
运行结果:
可以看到,执行结果也验证上述的说明,查询创建后,并没有马上执行,而是在遍历对象时才执行,否则第二个遍历不会打印出40.
如果在查询后面添加ToList等转换符,则会立即执行,如
IEnumerable<int> items2