数据操作So easy-LINQ解析_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 数据操作So easy-LINQ解析

数据操作So easy-LINQ解析

 2016/8/19 5:31:20  Helius-黑牛  程序员俱乐部  我要评论(0)
  • 摘要:1、LINQ是什么?LINQ是LanguageIntegratedQuery的缩写,即“语言集成查询”的意思。LINQ的提出就是为了提供一种跨越各种数据源的统一的查询方式,它主要包含4个组件--LinqtoObjects、LinqtoXML、LinqtoDataSet和LinqtoSQL。下面简单的介绍一下LINQ的4个组件。LinqtoSQL组件:它可以查询基于关系数据库的数据。其中,微软只实现了对SQLServer数据库的查询,包括对其中数据进行查询
  • 标签:数据 操作 解析

1、LINQ是什么?

    LINQ是Language Integrated Query的缩写,即“语言集成查询”的意思。LINQ的提出就是为了提供一种跨越各种数据源的统一的查询方式,它主要包含4个组件--Linq to Objects、Linq to XML、Linq to DataSet和Linq to SQL。

    下面简单的介绍一下LINQ的4个组件。

    Linq to SQL组件:它可以查询基于关系数据库的数据。其中,微软只实现了对SQL Server数据库的查询,包括对其中数据进行查询、修改和删除等操作。

    Linq to DataSet组件:它可以查询DataSet对象中的数据,并能对数据进行增删改查等操作。

    Linq to XML组件:该组件可以查询XML文件,在它被提出来之前,C#中使用XPath来对XML进行查询,但该工具没有Linq to XML来得简洁。

    Linq to Object组件:这个组件可以查询集合数据,如数组或List等。

 

2、LINQ好在哪里?

    好的地方:LINQ使对数据源的操作变得更加简单、方便和易于理解

    2.1 查询表达式

         在说明LINQ的好处之前,需要先了解“查询表达式”。查询表达式必须以from子句开头,并且必须以select或group子句结尾,在第一个from子句和最后一个select或group子句之间,可以包含一个或多个where子句、orderby、join子句。其形式非常类似于SQL语言,只是书写倒了过来。

         //查询表达式  var queryExp= from s in collection

                                                    select s;

         //查询表达式还有另外一种表达方式,即“点标记方式”,var queryExp=collection.Select(s=>s);

         至于选择什么方式,就看程序员个人的习惯了。

    

    2.2 使用Linq to Objects查询集合

          在LINQ提出之前,一般使用for和foreach查询集合,但这种方式没有LINQ to Objects来得简洁,且不容易添加筛选条件。

//创建查询表达式来获得集合中为偶数的元素
var queryResults= from item in collection
                            where item%2 ==0
                            select item;

          从以上代码可以看出,使用Linq to Objects来查询集合对象,代码更加简洁了。而且LINQ还方便添加筛选条件,只需要在where子句中添加即可。

 

   2.3 使用Linq to XML 查询XML文件

//创建查询,获取名字为“李四”的元素
var queryResults=from element in xmlDoc.Elements("Person")
                            where element.Element("Name").Value=="李四"
                             select element;

        从以上代码可以看出,使用Linq to XML查询XML文件,代码明显简洁了很多,只需要一个查询表达式即可。

        Linq to DataSet的例子这里就不写了,它的使用方式类似于Linq to Object,只是Linq to DataSet查询的不是集合对象而是DataSet对象。

 

3、理解LINQ的本质

    其实在C# 3.0中并没有添加任何新特性,因为对于编译器而言,C# 3.0新特性的代码和以前的代码一样,这对于LINQ也是不例外的。大家可以从IL代码中得出,LINQ表达式是建立在Lambda表达式和扩展方法的基础上的,而Lambda表达式又是建立在委托的基础上的,扩展方法也是属于方法,所以,LINQ的本质还是对方法的调用。

 

发表评论
用户名: 匿名