Tracy.Bai

Focus on Data analysis and Mining

导航

Linq in Action学习笔记(第三章)

 

1.       Linq language extension的关系

 

2.Linq 的触发机制-------Lazy evaluation

真正Request的时候才会被执行。

 

 

请单步调试下以下两个程序:

static void Main(string[] args)

        {

            int[] number = { 1, 2, 3 };

            var result = from b in number

                         select Square(b);

            //foreach (var r in result)

            foreach (var r in result.ToList())

            {

                Console.WriteLine(r);

            }

            Console.ReadLine();

        }

        static double Square(double n)

        {

            Console.WriteLine("Computing Square(" + n + ")...");

            return Math.Pow(n, 2);

        }

         foreach (var r in result)的时候,执行的结果是

         Console.WriteLine("Computing Square(1)...");

          1

Console.WriteLine("Computing Square(2)...");

          4

 Console.WriteLine("Computing Square(3)...");

          9

          也就是说,在result里的每个element只有当request的时候才会去执行Square(b)函数,而且是每个元素逐步执行的。

          而在foreach (var r in result.tolist())的时候,执行的结果是

           Console.WriteLine("Computing Square(1)...");

          Console.WriteLine("Computing Square(2)...");

Console.WriteLine("Computing Square(3)...");

1

4

9

这里说明执行的时候,一次性把Square(b)函数执行完,然后再进行循环,这就不是lazy evaluation.

 

 

 

3.Standand Query Operators

 

 

4.Standand Query Expression

5. 

查询操作符和查询表达式的对应

 

 

 6.为什么我们需要expression tree.

   An expression is an kind of abstraction syntax tree.在计算机科学当中,抽象的语义树代表是一种数据结构,它代表了被解析的源代码。在我们这里,expression tree c#编译器在执行Lambda 表达式分析操作的结果。这里的目标是一些代码将分析expression tree来执行各种各样的操作。expression tree.是显现lazy evalution的另一种方式。

posted on 2008-08-23 11:24  Love Fendi  阅读(170)  评论(0编辑  收藏  举报