一:与LINQ有关的语言特性

  1.隐式类型

    (1)源起

      在隐式类型出现之前,

      我们在声明一个变量的时候,

      总是要为一个变量指定他的类型

      甚至在foreach一个集合的时候,

      也要为遍历的集合的元素,指定变量的类型

      隐式类型的出现,

      程序员就不用再做这个工作了。

    (2)使用方法

       来看下面的代码:    

      var a = 1; //int a = 1;
      var b = "123";//string b = "123";
      var myObj = new MyObj();//MyObj myObj = new MyObj()

      上面的每行代码,与每行代码后面的注释,起到的作用是完全一样的

      也就是说,在声明一个变量(并且同时给它赋值)的时候,完全不用指定变量的类型,只要一个var就解决问题了

    (3)你担心这样写会降低性能吗?

      我可以负责任的告诉你,这样写不会影响性能!

      上面的代码和注释里的代码,编译后产生的IL代码(中间语言代码)是完全一样的

      (编译器根据变量的值,推导出变量的类型,才产生的IL代码)      

    (4)这个关键字的好处:

      你不用在声明一个变量并给这个变量赋值的时候,写两次变量类型

      (这一点真的为开发者节省了很多时间)

      在foreach一个集合的时候,可以使用var关键字来代替书写循环变量的类型

     (5)注意事项

      你不能用var关键字声明一个变量而不给它赋值

      因为编译器无法推导出你这个变量是什么类型的。

  2.匿名类型

    (1)源起

      创建一个对象,一定要先定义这个对象的类型吗?

      不一定的!

      来看看这段代码

    (2)使用 

         var obj = new {Guid.Empty, myTitle = "匿名类型", myOtherParam = new int[] { 1, 2, 3, 4 } };
Console.WriteLine(obj.Empty);//另一个对象的属性名字,被原封不动的拷贝到匿名对象中来了。
Console.WriteLine(obj.myTitle);
Console.ReadKey();

      new关键字之后就直接为对象定义了属性,并且为这些属性赋值

      而且,对象创建出来之后,在创建对象的方法中,还可以畅通无阻的访问对象的属性

      当把一个对象的属性拷贝到匿名对象中时,可以不用显示的指定属性的名字,这时原始属性的名字会被“拷贝”到匿名对象中

    (3)注意    

      如果你监视变量obj,你会发现,obj的类型是Anonymous Type类型的

      不要试图在创建匿名对象的方法外面去访问对象的属性!

    (4)优点

      这个特性在网站开发中,序列化和反序列化JSON对象时很有用

C#之LinQ数据库的更多相关文章

  1. Linq 数据库操作(增删改查)

    Linq数据库增删改查 Linq是一种查询语言,集成包含在formwork中,包含在C#语言中,它的作用是降低查询的门槛,提高开发效率,是我们必须掌握的技术之一,下面是我自己对linq数据库操作的方法 ...

  2. LINQ数据库技术

    LINQ(Language Integrated Qyery),中文名字是语言集成查询.它提供一个统一的编程概念和语法,编程人员不需要关心将要访问的是关系数据库还是XML数据,或是远程的对象,它都采用 ...

  3. linq 数据库已存在,直接添加数据

    using System.Data.Linq;using System.Data.Linq.Mapping; namespace ConsoleApplication1388{ class Progr ...

  4. 30.第一个Linq 数据库查询

    使用Linq to Entity查询数据库 首先在项目中添加ADO.NET实体数据模型,如下 新建连接 勾选生成的表 点击完成即可看到两个建立的实体数据对象模型 模型生成好之后就可以直接使用了 Cus ...

  5. wpf linq数据库无法插入

    最近做wpf应用程序,遇到一个很奇怪的问题,我用代码往数据库里插入数据成功了,但去vs的服务器资源管理器里查看数据库总是最开始的样子,什么都没有插入进去,然后就检查代码,打日志查看sql语句,发现都没 ...

  6. DotNet 资源大全中文版,内容包括:编译器、压缩、应用框架、应用模板、加密、数据库、反编译、IDE、日志、风格指南等

    DotNet 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-dotnet 是由 quozd 发起和维护.内容包括:编译器. ...

  7. LINQ 【增、删、改、查】数据绑定

    LINQ,语言集成查询(Language Integrated Query) 是一组用于c#和Visual Basic语言的扩展.它允许编写C#或者Visual Basic代码以查询数据库相同的方式操 ...

  8. LinQ to sql简介及增删改查

    Linq to sql 类 LinQ它就是一个集成化的数据库访问类,它会自动生成许多原本需要我们自己创建的东西: 它和ADO.NET是一样的东西,都是为了访问数据库而出现的,EF框架 一.创建LinQ ...

  9. SQLCE本地数据库

    SQLCE是一个标准得关系数据库,可以使用 LINQ 和DateContext来处理本地数据库数据库. 使用SQLCE 要在代码中使用本地数据库功能,需要添加以下命名空间 : using System ...

随机推荐

  1. CentOS 下安装

    2016年12月5日15:25:58 ----------------------------------- 通常情况下在centos下安装软件就用yum. 关键是,使用yum你要知道安装包的名字是什 ...

  2. MooseFs-分布式文件系统系列(二)之安装总结

    preface 上篇博客写了如何安装MFS,那么现在就说说经验总结把 安装方式有源码和yum安装,在官网地址:https://moosefs.com/download/centosfedorarhel ...

  3. python click module for command line interface

    Click Module(一)                                                  ----xiaojikuaipao The following mat ...

  4. MyEclipse快捷键大全(绝对全)

    存盘 Ctrl+s(肯定知道) 注释代码 Ctrl+/ 取消注释 Ctrl+\(Eclipse3已经都合并到Ctrl+/了) 代码辅助 Alt+/ 快速修复 Ctrl+1 代码格式化 Ctrl+Shi ...

  5. js004-变量、作用域和内存问题

    js004-变量.作用域和内存问题 4.1 基本类型和引用类型的值 基本类型:简单的数据段 引用类型:可能由多个值构成的对象 五种基本数据类型:undefined.null.boolean.Numbe ...

  6. JQuery------$.getJSON()方法的使用

    html(../Home/Index.cshtml) <body> <button class="Btn">按钮</button> </b ...

  7. re正则表达式7_{}

    curly brackets {} instead of one number, you can specify a range by writing a minimum,a comma,and a ...

  8. 取出return array() 数组内容

    d.php文件 return array( "0" => 内容一, "1" => 内容二, "2" => 内容三, &qu ...

  9. 固定IP 正常访问谷歌

    如题 地址栏直接输入 http://173.194.1.150/ 正常使用 ~标记一下~

  10. Python开发【第七篇】:面向对象

    Python之路[第五篇]:面向对象及相关   面向对象基础 基础内容介绍详见一下两篇博文: 面向对象初级篇 面向对象进阶篇 其他相关 一.isinstance(obj, cls) 检查是否obj是否 ...