Linq入门——什么是linq & 扩展方法

 一,什么是Linq

       

       

     linq(language integrated Query):语言集成查询;

     linq包含如下:

     

     

    对对象的查询,对数据库的查询,对XML的查询。

      那么,没有linq前我们是怎样查询的?

 

          先看一个例子:

  

         现在我们要查询大于50的数,:

         在没有linq之前,我们的代码时这样的:

        

          使用了linq查询:

         

            首先,从直观上看,代码更加简洁,其次,对于查询部分,接近SQL语句,层次清晰,容易理解;

       

            除了简单高效以为,LINQ的出现解决了很多问题:

                1,面向对象与数据访问两个领域长期分裂,各自为政的问题:比如,在面向对象中,对于对象中数据的访问,我们用“对象名称.属性名”就可以,但是在数据访问领域,我们要从数据库中查询数据的时候,用的确实SQL语句,比如select * from table.

            

              2,编程语言中的数据类型与数据库中的数据类型形成两套体系;

                        例如,编程语言中字符串string, 但是数据库中可以用很多类型代表字符,如:char,nvchar,vchar

 

             3,SQL编码体验落后

                        SQL语句只有运行时才会发现错误,不能在写代码的时候发现语法错误,我们要调试SQL语句,只能放到查询分析器里面进行单独调试;

 

             4,SQL和XML都有各自的查询语言,而对象没有自己的查询语言

                         对于数组和结合的查询只能遍历进行,不像SQL和XML那么简单;

          

     二,扩展方法

                         首先,扩展方法是对现有的类提供额外的方法,来扩展类的功能;

                其次,Linq基于扩展方法;

              示例:

             

              

                       需要注意的是,扩展方法中this后面指定了此方法针对的类型。

                         后续将涉及到linq深入探索,本人初学者,请多多关照。

  

时间: 2024-12-05 16:38:57

Linq入门——什么是linq & 扩展方法的相关文章

Linq扩展方法简单分析

在向大家详细介绍LINQ之前,首先让大家了解下LINQ是什么,然后全面介绍Linq扩展方法. LINQ使查询成为了.NET中头等的编程概念,被查询的数据可以是XML(LINQ to XML).Databases(LINQ to SQL.LINQ to Dataset.LINQ to Entities)和对象(LINQ to Objects).LINQ也是可扩展的,允许你建立自定义的LINQ数据提供者(比如:LINQ to Amazon.LINQ to NHibernate.LINQ to LDA

Linq之扩展方法

目录 写在前面 系列文章 扩展方法 总结 写在前面 上篇文章介绍了隐式类型,自动属性,初始化器,匿名类的相关概念,及通过反编译的方式查看了编译器帮我们做了那些事.本篇文章将介绍扩展方法的知识点,及如何定义,如何使用的相关内容. 系列文章 Linq之Lambda表达式初步认识 Linq之Lambda进阶 Linq之隐式类型.自动属性.初始化器.匿名类 扩展方法 扩展方法使你能够向现有类型"添加"方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法

为LINQ服务的C#新特性总结篇---扩展方法,匿名委托,lambda表达式,Action委托,Func委托,Linq中的order by,top和sum函数

Codeusing System;using System.Collections.Generic;using System.Linq;using System.Text; using System.Diagnostics; namespace ConsoleApplication1{    static class Program    {        static void Main(string[] args)        {            //Predicate       

请介绍一个学习linq入门的地址

问题描述 那位可以介绍linq入门的地址阿. 解决方案 解决方案二:网上搜搜..解决方案三:什么东西解决方案四:http://msdn2.microsoft.com/en-us/library/bb397926(VS.90).aspx

MVC LINQ中用封装的TSQL通用更新方法

今天用LINQ的update出现问题了,LINQ的BUG不少,呵呵,所以自己把TSQL拿出来,做了一个封装,适用的所有表,更新有两种,普通更新和记数更新 看代码:这两个方法是写在DAL里的数据操作基类里的,只有它的子类可以用它,所以用protected做为限制    /// <summary>         /// 通用更新方法         /// </summary>         /// <param name="tableName">表

泛型T 如何在扩展方法中使用?

问题描述 泛型T 如何在扩展方法中使用? 本来想了解一下扩展方法,但是看到文库中的实例明显有问题,特来提问 泛型对象T 如何使用Length 属性? 可以像类中一样加继承于某某类的约束吗? http://wenku.baidu.com/link?url=Vz-Cjrq24tvblbk0l1I4IPYYfZ82jkGpzGBoNBDhi6qSCJko9hSTcrKGWrunO91TqTgyqB0AMvueHUP1or-mi8ktWMejceDW6Y-OphMnBh7 public static c

C# 3.0 新特性:扩展方法初探

C#3.0中一个激动人心的特性就是扩展方法:你可以使用实例方法的语法来调用静态方法.本文仔细阐述了这一新特性并且给出了几个相应的例子. 声明扩展方法 扩展方法的行为和静态方法是非常类似的,你只能在静态类中声明它们.为声明一个扩展方法,你需要给该方法的第一个参数指定this关键字,如下例: // Program.cspublic static class EMClass{ public static int ToInt32Ext(this string s) { return Int32.Pars

.NET 3.x新特性体验之扩展方法

今天我们接着看一下.NET 3.x的新特性:扩展方法.这里需要说明的是我所说的.NET 3.x的新特性,其实是C# 3.0的一些新特性,考虑到LinQ等我就把这些特性叫做.NET 3.x新特性.可能这样叫会有些歧义,但是我还是觉的这样还好,闲话不多说让我们进入正题.我觉得在C#3.0中引入自动化属性等就已经减少了我们不少负担,而扩展方法是我最喜欢的,它提供的可视化提示中显得更为巧妙.但是我也会觉得有点烦琐,当一个类的扩展方法太多时,就像有LinQ存在的情况下,会出现一大批的提示方法......

C#3.0扩展方法(Extension Methods)

今天早上在MSDN站点看到这样一篇文章: C# 3.0 LINQ 的演变及其对 C# 设计的影响 . 从这篇文章我们就可以明显的看到,C# 3.0 所新增的这些特性,可以认为都是为了LINQ 的发展,为了LINQ更易用,所创建的一些新特性,当然这些新特性也可以被非LINQ相关功能所使用.LINQ的发展,带动了C#3.0 这一系列新特性的产生. 回来说我们的话题,扩展方法,首先看一个最简单的代码例子: 扩展方法的定义,需要注意三个部分:1.静态类(私有公共都可以):2.静态方法(私有公共都可以):