码迷,mamicode.com
首页 > 其他好文 > 详细

1.1 什么是LinQ

时间:2014-12-13 10:47:04      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   使用   sp   strong   

 

  如今,软件应用环境越来越多样化,软件需要处理的数据量也日渐庞大,数据之间的关系日渐复杂。从而带动了存储技术的不断发展,越来越多的数据存储格式被应用到各种软件中。

 

  通常,针对数据的查询是用简单的字符串文本来编写的查询语句,比如传统的SQL查询语句,没有编译时的类型检查,安全性、方便性都不好。此外,开发人员还需要为不同的数据源学习不同的查询语言,比如,查询SQL数据库的T-SQL、查询XML数据的DOM结构等。

 

  为了解决上面的问题,微软推出了一项具有突破性的新特性——语言集成查询(LINQ)。LINQ是“Language Integrate Query”的缩写。它在对象和数据之间建立一种对应关系,可以使用访问内存对象的方式查询数据集合。

  LINQ使查询成为C#中的一种语言构造。开发人员可以在C#代码中前台类似于SQL语句的查询表达式,从而实现数据查询的功能

 

  LINQ不是简单地在C#中嵌套查询表达式,而是将查询表达式作为C#的一种语法。查询表达式访问的数据源是包含一组数据的集合对象。所以,编译时将对查询的数据类型进行检查,增强了类型安全性。

  同时,还可以根据集合类型,用Visual Studio编写代码使用智能感知功能,使得编码更快捷和轻松。

  LINQ还可以通过函数的形式提供过滤条件等,大大简化了查询表达式的复杂度。

 

  由于LINQ中查询表达式访问的是一个对象,所以该对象本身可以表示各种类型的数据源。

  比如SQL Server数据库、XML文档、ADO.NET数据集,以及内存中的数据集合等,从而,为不同类型数据源的数据查询提供一种统一的编码方式。

 

  在.NET类库中,LINQ相关类库都在System.Linq命名空间下,该命名空间提供支持使用LINQ进行查询的类和接口,其中最主要的是以下两个类和两个接口:

提供支持使用LINQ查询主要的两个类和接口

IEnumerable<T>

接口

它表示可以查询的数据集合,一个查询通常是逐个对集合中的元素进行筛选操作,返回一个新的IEnumerable<T>对象,用来保存查询结果。

IQueryable<T>

接口

它继承IEnumerable<T>接口,表示一个可以查询的表达式目录树。

Enumerable

它通过对IEnumerable<T>提供扩展方法,实现LINQ标准查询运算符。包括过滤、导航、排序、查询、联接、求和、求最大值、求最小值等操作。

Queryable

它通过对IQueryable<T>提供扩展方法,实现LINQ标准查询运算符。包括过滤、导航、排序、查询、联接、求和、求最大值、求最小值等操作。

 

注意:深入学习LINQ之前,读者应该具备LINQ所用到的C#高级语言特性,包括接口、泛型、扩展方法、可变类型、匿名类型等。

 

根据数据源类型,可以将LINQ技术分成以下几个主要的技术方向
LINQ to Object 数据源为实现了接口IEnumerable<T>或IQueryable<T>的内存数据集合,这也是LINQ的基础,本章将详细介绍这方面的内容。
LINQ to ADO.NET 数据源为ADO.NET数据集,这里讲数据库中的表结构映射到类结构,并通过ADO.NET从数据库中获取到数据集到内存中,通过LINQ进行数据查询。
LINQ to XML 数据源为XML文档,这里通过XElement、XAttribute等类将XML文档数据加载到内存中,通过LINQ进行数据查询。

 

  通过这几种常见的数据类型之外,.NET 4.5还为用户扩展LINQ提供了支持,用户可以根据需要实现第三方的LINQ支持程序,然后通过LINQ获取自定义的数据源。

 

 

 

 

内容参考:

《精通C#5.0与.NET 4.5高级编程——LINQ、WCF、WPF和WF》

 

【来自 孤影‘Blog:http://www.cnblogs.com/LonelyShadow,码字不容易,转载请注明出处。】

 

1.1 什么是LinQ

标签:style   blog   http   io   ar   color   使用   sp   strong   

原文地址:http://www.cnblogs.com/LonelyShadow/p/4160944.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!