LINQ学习笔记(二)

LINQ语法基础

  1  C#3.0新的语言机制

    (1)隐形局部变量

    (2)对象初始化器

    (3)匿名类型

    (4)隐形数组

    (5)Lambda表达式

    (6)查询表达式

    (7)扩展表达式

    (8)表达式树

  2 使用var创建隐形局部变量

    C#3.0使用var关键字声明变量。var关键字指示编译器能够变量初始化表达式判断变量的类型,即是用var关键字声明变量时,隐藏了该变量的类型。

   (1)var关键字声明声明的变量必须包含一个初始化器,初始化器必须为一个表达式。且初始化器不能包含自身对象;

    (2) var关键字声明的变量的初始化值不能为null;

    (3) 不能在同一语句中初始化多个隐式类型的变量

  3 对象和集合初始化器

    对象初始化器可以不调用类的构造函数就能够创建类的实例,并设置该实例的属性的值。

    集合初始化器用来初始化一个集合,它由一系列元素组成,并封闭于"{"和"}"标记内

   (1)对象初始化器

        UserInfo user=new UserInfo

         {

            ID=2008,

             Username="This is a book",

             AliasName=new List<string>{"ASP.NET"},

             Email="asp.net@web.com",

             RoleID=2

         };

     (2) 集合初始化器

         List<int> number=new List<int>{0,1,2,3,4,5,6,7,8,9};

                    集合初始化器调用ICollection<T>.Add()方法将初始化器的值列表中的每一         个元素添加到集合中,并完成初始化操作。

         List<int> numbers=new List<int>();

         numbers.Add(0);

              numbers.Add(1);

              numbers.Add(2);

         numbers.Add(3);

              numbers.Add(4);

              numbers.Add(5);

  4  创建匿名类型的对象

      var role=new {ID=1,RoleName="Admin"};

  5  创建隐形数组

      隐形数组使用var关键字和数组初始化器创建。数组初始化器中必须存在一种数       据类型(不能为null),使得数组初始化器中的所有元素都能够隐式转换为该类        型的对象

      var numbers =new[]{0,1,2,3,4,5,6,7,8,9}

      下面的代码将产生错误

      var errors=new[]{"he,"she","it","1","2"};

  6   Lambda表达式

      Lambda表达式是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托       和表达式目录树类型。

      Lambda表达式的组成:

       输入参数(如果存在)

       Lambda运算符(=>)

       表达式(或语句块)

      (input parmeters) => expression

        x => x * x;

     (1)Lambda表达式的参数

          没有参数时可以省略括号;有一个参数时可以省略;一个以上参数时必须          加括号

     (2)Lambda表达式的语句

          Lambda运算符的右边不但可以是一个表达式,还可以是语句块

      (3) Lambda表达式转换

          每一个Lambda表达式都可以转换为相应的函数

   7   查询表达式

       查询表达式由一组用类似于SQL或XQuery的声明性语法编写的字句组成

      (1) 查询表达式基础

            查询表达式包含8个基本子句:from、select、group、where、orderby              join和let子句

      (2) 查询表达式的基本子句(略)

           

原文地址:https://www.cnblogs.com/BigSeaHorse/p/LINQ_Study_2.html