zoukankan      html  css  js  c++  java
  • 一步一步学Linq to sql(一):预备知识

    一:什么是Linq to sql

      Linq to sql(或叫DLINQ)是LINQ(.NET语言集成查询)的一部分,全称基于关系数据的.NET语言集成查询,用于以对象形式管理关系数据,并提供了丰富的查询功能,它和Linq to xml,Linq to objects,Liniq to dataset,Linq to entities等组成了强大的LINQ.

      要学好LINQ查询语法,就不得不限理解C#3.0的一些新特性,下面一一简单介绍.

    二.隐含类型局部变量

    var-(1)编译器推断它的类型(CLR不知道你是否使用了var)

      (2)声明的时候赋值,而且不能使null值

      (3)只能用于局部变量,用于字段是不可以的

    (4)eg: View Code

     

    三.匿名类型

    var-(1)允许开发人员自定义行内类型,无需显示定义类型

      (2)var用于声明匿名类型

      (3)可以很方便的实现对象的转换和投影

      (4)eg:var date=呢我{username="zhuye",age=26};

          Console.WriteLine("username:{0}age:{1}",date.username,data.age);

    四.扩展方法

      (1)为了对CLR类型进行操作,只能创建一些helper方法,或者生产子类,扩展方法可以解决这些问题,同事也是实现LINQ的基础.

      (2)只能在静态类中定义并且是静态方法

      (3)如果扩展方法名和原有方法名发生冲突,那么扩展方法将失效

    public static class helper

    {

      public static string MD5Hash(this.string s)

      {

        return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(s,"MD5")

      }

       public static bool In(this object o,IEnumerable b)

       {

         foreach(object obj in b)

         {

           if(obj==o)

            return true;

          }

          return false

       }

    }

    //调用扩展方法

    Console.WriteLine("123456",MD5Hash());

    Console.WriteLine("1",In(new[]{"1","2","3"}));

    五.自动属性

      (1)意义不大,解决机械劳动,编译器自动为你生成get,set操作以及字段,并且你不能使用字段也不能自定义get,set操作,不过你可以分别定义get,set的访问级别.

      (2)eg:

          

    六.对象初始化器

      (1)编译器会自动为你做setter操作,是的原本几行的属性赋值操作能在一行中完成,

      (2)允许只给一部分属性赋值,包括internal访问级别

      (3)可以结合构造函数一起使用,并且构造函数初始化优先于对象初始化器执行

      (4)eg:

          

    七.集合初始化器

      (1)编译器会自动为你做集合插入操作.如果你为Hashtable初始化的话就相当于使用了两个对象初始化器

      (2)eg:

          

    八.Lambda表达式

      (1)和2.0的匿名方法差不多,都是用于产生内联方法,只不过Lambda表达式的语法更为简洁.

      (2)语法如下:(参数列表)=>表达式或者语句块

          其中:

          参数个数:可以有多个参数,一个参数,或者无参数

          表达式或者语句块:这部分就是我们平常写函数的实现部分(函数体).

          前面的示例分别是1个参数的例子,下面集合扩展方法来一个复杂的例子:

      (3)eg1:一个参数的例子

          

          eg2:多个参数的例子

          

    九.查询句法

      (1)查询句法是使用标准的LINQ查询运算符来表达查询时一个简便的声明式简化写法

      (2)该句法能在代码里表达查询时增进可读性和间接性

      (3)VS对查询句法提供了完整的智能感应和编译时检查支持

      (4)编译器在底层吧查询句法的表达式翻译成明确的方法调用代码,代码通过新的扩展方法和Lambda白大师语言特性来实现

      (5)等价比较--第一段代码的查询句法等价于第二段代码

        查询句法如下:

          

        等价代码如下:

          

      (6)LINQ查询句法可以实现90%以上T-SQL的功能(由于T-SQL是基于二维表的,所以LINQ的查询语法比T-SQL更简单和灵活),但是由于智能感应的原因,select不能放在一开始就输入.

  • 相关阅读:
    不运用正则排除出现的特定数的数字
    重绘 贝赛尔曲线特效
    缓动类gs.TweenLite示例
    画方格(二维数组)
    递归函数
    鼠标经过延时出现Hint
    鼠标控制元件移动带缓动 鼠标点击发射子弹
    A碰到B之后持续加速度的时间问题
    播放完成之后移除动画
    hdu 1032 The 3n + 1 problem (数学)
  • 原文地址:https://www.cnblogs.com/avrilliu/p/2984626.html
Copyright © 2011-2022 走看看