LINQ表达式在定义以后,也只是一个定义,其对集合的“查询”在这个时候其实是没有进行的,实际的动作发生在定义之后对这个定义进行操作的时候。这就是所谓的延时执行:        
     有例为证:
() 
            {
                new Employee(){ id="1001", name="ivan", dept="isd", tel="1021"},
                
new Employee(){ id="1002", name="ivan", dept="isd", tel="1021"},
            };

            var query 
= from e in emps
                        select e;

            emps.Add(
new Employee(){ id="1003", name="ivan", dept="isd", tel="1021"});

            Console.WriteLine(query.Count());  

    运行一下,就可以知道,此Count为3,而不是2.
     如果想要LINQ在定义的时候就对结果进行“存储”,可以利用ToList, ToArray等转换运算符。
()
                       select e;

            emps.Add(new Employee() { id = "1004", name = "ivan", dept = "isd", tel = "1021" });

            Console.WriteLine(query2.Count());

     

相关文章: