LinQ从零开始---初体验

简介:

LinQ从零开始---初体验

 

         LinQ是什么?

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

 

         LinQ要解决什么问题?

         面向对象与数据访问两个领域长期分裂,各自为政, 编程语言中的数据类型与数据库中的数据类型形成两套体系。

  • C# 中字符串用 string 表示
  • SQL 中字符串用 NVarchar/Varchar/Char 表示

         SQL 编码体验落后

  • 没有智能感应
  • 没有严格意义上的强类型和类型检查

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

 

         LinQ的组成

        

         LINQ包括五个部分:LINQto Objects、LINQ to DataSets、LINQ to SQL、LINQ to Entities、LINQ to XML。

         1.LINQ to Objects

         主要负责对象的查询(是指直接对任意IEnumerable集合使用LINQ查询,无需使用中间LINQ程序或API。LINQ To Object 提供的是内存中集合数据的实体映射.

         2.LINQ to XML

         在System.Xml.LINQ命名空间下实现对XML的操作。采用高效、易用、内存中的XML工具在宿主编程语言中提供XPath/XQuery功能等

         3.LINQ toADO.NET 

         主要负责数据库的查询

         1)LINQ to SQL

         全称基于关系数据的.NET语言集成查询,用于以对象形式管理关系数据,并提供了丰富的查询功能。其建立于公共语言类型系统中的基于SQL的模式定义的集成之上,当保持关系型模型表达能力和对底层存储的直接查询评测的性能时,这个集成在关系型数据之上提供强类型。

         2)LINQ to DataSet

LINQ to DataSet将LINQ和ADO.NET集成,它通过ADO.NET获取数据,然后通过LINQ进行数据查询,从而实现对数据集进行非常复杂查询。

         3)LINQ to Entities

         它让你可以使用标准的 C#对象与数据库的结构和数据打交道。使用 LINQ to Entities 时,LINQ 查询在后台转换为 SQL 查询并在需要数据的时候执行,即开始枚举结果的时候执行。LINQ to Entities 还为你获取的所有数据提供变化追踪,也就是说,可以修改查询获得的对象,然后整批同时把更新提交到数据库。

       LINQ to Entities 是 Entity Framework 的一部分并且取代 LINQ to SQL 作为在数据库上使用 LINQ 的标准机制。Entity Framework 是行业领先的对象-关系映射(ORM)系统。可以和多种数据库一起使用,并支持各种灵活、复杂的数据模型。

 

         说了这么多,我们还是用一个简单的实例说明一下微软LINQ to SQL框架为我们带来的体验。

 

         LinQ实例

         我们从一个数组中选出自己需要的数据,看看用普通方法和使用LinQ有什么区别。

         不使用LinQ:

            int[] arr = { 123, 2, 22, 23, 15, 6, 8, 67, 887, 999 };

            //获取大于50的数
            //没有Linq我们怎么做、
            ArrayList result = new ArrayList();
            for (int i = 0; i < arr.Length; i++)
            {
                if (arr[i] > 50)
                {
                    result.Add(arr[i]);
                }
            }
            //打印result
            for (int i = 0; i < result.Count; i++)
            {
                Console.WriteLine(result[i]);
            }

         输出结果:


 

           使用LinQ:

            //获取大于50的数
            IEnumerable ie = arr.Select(p => p).Where(p => p > 50);
            //输出-----该部分可以重复
            IEnumerator result = ie.GetEnumerator();
            while (result.MoveNext())
            {
                Console.WriteLine(result.Current);
            }

           输出结果:

           分析:

           从上面的实例中我们可以发现相对于不使用LinQ,使用LinQ代码更加简洁;同时无需复杂学习过程即可上手。

           关于LinQ的其他优点,更快开发错误更少的应用程序。无需求助奇怪的编程技巧就可合并数据源。能够大幅减少过程控制语句的代码块,使代码的可读性和可维护性大幅提高。任何对象或数据源都可以定制实现LinQ适配器,为数据交互带来真正方便。还有待我们探究!


文章中实例源码:http://pan.baidu.com/s/1AQaV8
  
   

 

目录
相关文章
|
6月前
|
前端开发 应用服务中间件 数据库
Python编程入门实战:打造你的第一个Web应用
Python编程入门实战:打造你的第一个Web应用
27 0
|
10月前
|
前端开发 C# 图形学
unity入门必备的案例2.0
unity入门必备的案例你还不知道?
62 0
|
10月前
|
前端开发 C# 图形学
unity入门必备的案例你还不知道?
unity入门必备的案例你还不知道?
130 0
|
中间件 C#
MasaFramework入门第二篇,安装MasaFramework了解各个模板
MasaFramework入门第二篇,安装MasaFramework了解各个模板
175 0
MasaFramework入门第二篇,安装MasaFramework了解各个模板
|
Web App开发 前端开发 开发者
SAP UI5 初学者教程之一:Hello World 试读版
SAP UI5 初学者教程之一:Hello World 试读版
107 0
SAP UI5 初学者教程之一:Hello World 试读版
|
索引 Python
列表中的方法简介 | Python从入门到精通:进阶篇之五
本文讲述了如何通过方法修改列表,包括添加元素、删除元素、列表的翻转以及排序等的使用方式。
列表中的方法简介 | Python从入门到精通:进阶篇之五
|
索引 Python
列表的修改 | Python从入门到精通:进阶篇之四
本文介绍了如何通过索引和切片两种方式对列表进行修改和删除的操作。
列表的修改 | Python从入门到精通:进阶篇之四
|
索引 Python 存储
列表的通用操作 | Python从入门到精通:进阶篇之三
本节课带你了解列表的一些通用操作,包括加操作、乘操作、如何获取索引位置、如何获取最大元素等。
列表的通用操作 | Python从入门到精通:进阶篇之三