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

  

时间: 2024-10-27 17:35:06

LinQ从零开始---初体验的相关文章

LINQ to Object初体验(使用对象取代二维数组作数据筛选)

VS2008里面有个神奇的东西,称之为LINQ,可以透过相同的语法方式来处理各式各样的数据(SQL,XML,Object,...),小喵此次初体验感受一下这个东西,真的很好用,初体验来做个简单的测试,请看小喵娓娓道来 VS2008里面有个神奇的东西,称之为LINQ,可以透过相同的语法方式来处理各式各样的数据(SQL,XML,Object,...),小喵此次初体验感受一下这个东西,真的很好用,初体验来做个简单的测试,请看小喵娓娓道来 先来看一张LINQ的架构图(数据来源:曹祖圣老师在TechEd2

WCF之初体验

什么是WCF? WCF的全称是:Windows通信基础(WindowsCommunication Foundation),本质来讲,他是一套软件开发包. WCF和WebService的区别 Webservice:严格来说是行业标准,不是一种技术,使用XML扩展标记语言来表示数据(这个是跨语言和平台的关键.) WCF其实一定程度上就是ASP.NET WebService,因为它支持Web Service的行业标准和核心协议,因此ASP.NET Web Service和WSE能做的事情,它几乎都能胜

SSH初体验系列--Hibetnate--2--crud操作

Ok,今天比较详细的学习一下hibernate的C(create).R(read).U(update).D(delete) 相关api... 前言 Session: 是Hibernate持久化操作的基础,提供了众多的数据库操作方法,如save(),update(),delete()...etc,用于完成对象的增加,修改,删除等方法. 后面代码中使用到的HinernateUtil类:是用于构建SessionFactory(Hibernate提供的获取session的工厂类)的一个封装类,在前面的文

ArcGis SOE(server object extensions)之REST Template初体验

一.安装vs和arcgis server for .net(本例是vs2010.as 10),然后打开vs新建一个项目 二.项目创建成功后(本例项目名称是GetArea),打开.cs文件. 三.接口方法说明 private RestResource CreateRestSchema() { RestResource rootRes = new RestResource(soe_name, false, RootResHandler); RestOperation sampleOper = new

Kotlin初体验

让我们从一个小例子开始,来看看 Kotlin 代码长什么样子.这个例子定义了一个 Person 类来表示"人",创建一个"人"的集合,查找其中年纪最大的人,并打印结果.尽管这是非常小的一段代码,从中也可以看到 Kotlin 许多有趣的特性.  我们对其中的一些特性做了标记,以便你可以方便地在本书后续的内容中找到它们.  代码简要地进行了解释,但是如果有些内容你现在还无法理解,请不要担心,稍后我们会详细讨论.  如果你想尝试运行这个例子,最简单的方法是使用 http:

.NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验

不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家介绍.NET平台下的文档型数据库RavenDB,虽然我以前也在小项目用过其他文档型数据库,但问题很多,小项目还可以,大项目就歇菜了.这个数据库我关注了很久,最近一直在看它的文档,所以把知道的先总结下来. .NET开源目录:[目录]本博客其他.NET开源项目文章目录 本文原文地址:http://www

elmah - Error Logging Modules and Handlers for ASP.NET - 1 : 初体验

elmah(英文):https://code.google.com/p/elmah/ 写作思路:先看结果,然后再说原理 elmah文章基本内容如下 1.安装 2.基本使用 3.详细配置讲解 简介 ELMAH是一个开源项目,其目的是记录和报告在ASP.NET Web应用程序未处理的异常. 早在2004年9月与Atif阿齐兹和斯科特·米切尔发表在MSDN Library,其目的是作为一个概念证明,编写自包含的功能与ASP.NET HTTP模块和处理程序是绝对有可能的,大多有这种特征可能是一篇文章插入

Entity Framework Core 在 .NET 4.6 与 .NET Core 的初体验

这篇会使用 Visual Studio 2015 + .NET 4.6.2 建立 Console 程序来尝试 EF Core, 同时也会使用 dotnet?+?.NET Core 1.0?建立 Console 程序来尝试 EF Core. Visual Studio 2015 或?Visual Studio Code 只是整合开发工具,与搭配哪种 Framework(.NET Core 1.0,?.NET Framework 4.6) 是没有限制的. 让我们从熟悉的 Visual Studio

程序老兵挑战技术峰会主持之初体验

科技是第一生产力,在互联网时代体现得更加淋漓尽致,我们技术人也要走上舞台,也要学会面对观众,但大多数技术人都缺乏公众演讲的经验,尤其是在规格较高.观众众多的技术峰会舞台上.在技术人里演讲做的最好,在演讲者里技术做的最好,这也是非常好的差异化优势.好的公众演讲能力可以帮技术人打开更多职业发展的可能,技术售前,咨询顾问,技术布道者,培训讲师等等,35 岁不仅只有危险,还有无限机会! 2019 年老兵哥完成了技术峰会筹办和主持的初体验,在深圳.上海两地都举行了两场活动,每场活动有近千个观众参与,最终外