一:与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. HDU 1754 I Hate It(线段树模板题)

    题目链接: 传送门 I Hate It Time Limit: 3000MS     Memory Limit: 32768 K Description 很多学校流行一种比较的习惯.老师们很喜欢询问, ...

  2. 画虚线 iOS

    整理了一个方法,可以直接绘制虚线,下面直接上代码.参数说明已经给出,可直接copy使用 /** ** lineView: 需要绘制成虚线的view ** lineLength: 虚线的宽度 ** li ...

  3. 今天接触枚举类型,感觉是C里面应该才有的东西

    遍历枚类型的方法: public static EActChannel getEnumByCode(int code) { for (EActChannel enm : EActChannel.val ...

  4. Objective-C学习笔记之NSData、NSDate

    NSData和NSMutableData存储的是二进制数据,在文件操作,网络,以及核心图形图像中使用较广泛.NSData创建后不可以再修改,NSMutableData可以再次修 NSString *s ...

  5. php爬虫 phpspider

    <?php /** * Created by PhpStorm. * User: brady * Date: 2016/12/9 * Time: 17:32 */ ini_set("m ...

  6. TextBox的值是否为数字

    <asp:TextBox ID="t" Width="70" runat="server" style="ime-mode: ...

  7. Information retrieval信息检索

    https://en.wikipedia.org/wiki/Information_retrieval 信息检索 (一种信息技术) 信息检索(Information Retrieval)是指信息按一定 ...

  8. 在项目中那个少用if else 语句,精简代码,便于维护的方法(1)

    一般我在写一个函数的时候,可能需要一个回调函数,例如: function loadQtipCode(dom, title, content, width, showcb, hidecb) { $(do ...

  9. yourphp点击刷新验证码

    加入css <script type="text/javascript" src="./Public/Js/my.js"></script&g ...

  10. 获取ip的ip138.com

    代码: function get_onlineip() { $ch = curl_init('http://iframe.ip138.com/ic.asp'); curl_setopt($ch, CU ...