`
lovnet
  • 浏览: 6706484 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

微软免费图书《Introducing Microsoft LINQ》翻译--LINQ概述

阅读更多

本书翻译目的为个人学习和知识共享,其版权属原作者所有,如有侵权,请告知本人,本人将立即对发帖采取处理。
允许转载,但转载时请注明本版权声明信息,禁止用于商业用途!

博客园:韩现龙

第一章LINQ简介

概述

通过上网,你可以找到一些关于语言集成查询(LINQ)的说明,比如下面这些:

· LINQ 是针对任意一种数据的统一编程模型。LINQ使你可以通过某个独立于数据源的模型来查询和操纵数据。

· LINQ只是将SQL查询嵌入到代码中的另一种工具。

· LINQ 是另一种数据抽象层。

所有的这些描述在一定程度上是正确的,但是它们只是提到了某个单一的方面。LINQ可以做许多的事情,而不仅仅是嵌入式的SQL查询,它比“统一编程模型”要简单易用而且远远不只是数据建模的另一组规则。

LINQ是一种简化并且将任意一种数据访问接口实现的技术。LINQ没有强制你去使用某种特定的架构,它促进实现了现存的架构对数据的访问。像每一个工具一样,它可能被用得好,也可能被用得不好。为了使充分利用LINQ,你必须精通掌握它。

今天,程序控制的数据可以属于不同的数据域:一个数组(array),一个对象图表(object graph),一个XML文件(XML document),一个数据库(database),一个文本文件(text file),一个注册表值(a registry key),一封电子邮件(e-mail message),简单对象访问协议(Simple Object Access Protocol)信息内容,一个微软的Excel表格……举不胜举。

每一种数据域有它自己的访问方法。当查询一个数据库时,你很自然地就用SQL,当你访问XML数据时,很自然地就用DOM或者XQuery。为了定位某个对象图你遍历一个数组并且构建自己的算法。你使用特定的应用程序(APIs)来访问其他的数据域,比如说Office 的Excel表格,一封电子邮件,或者其他的MS的Windows注册表。最终的结果是,在访问不同的数据源时就有了不同的编程模型。

已经有多种方式尝试着将多种数据访问技术融入到一个综合的模型中。例如,在ODBC的Provider让你像WMI存储数据一样查询Excel文件。然而,在这种方法下你用像SQL一样的语句来访问通过关系模型(relational model)表现的数据。有时数据在层次或者图形模型下显然会比关系型的数据要更高效。而且,如果数据模型和语言无关的话,你可能还必须管理不同类型的系统。所有这些都导致了在数据和代码之间的“阻抗失谐(impedance mismatch)”。LINQ试图去解决这些问题,它提供了一个统一的访问和操作数据的方式,而无须强制采用一个“一体适用(one size fits all)”的模型。LINQ在这些数据模型之间的操作(operations)上起到一个平衡的作用,而不是将除去的各种不同的架构(structures)之间的差异。

在本章中,我们将会对LINQ进行一个综合的简介,在本书的其余部分中,你能够加深对这个新而强大技术的理解。

什么是LINQ?

LINQ是一个将查询作为首要类的概念引入到Microsoft .NET中的任何一种语言中编程模型。然而,在使用的语言中对于LINQ的完全支持需要一些扩展,这些扩展极大提高了生产力,由此也提供一个更短的,有意义并且富于表现的语法来操纵数据

下面是一个简单的一个典型的软件解决方案中的LINQ查询,它返回国家在Italy的所有客户的名字集合:

var query =
 from c in Customers
 where c.Country == "Italy"
 select c.CompanyName;

现在请不要担心语法和关键字(像var关键字)。这个查询的结果是一个strings集合。在C#中你可以用一个foreach语句去对该结果进行枚举处理:

foreach ( string name in query ) {
 Console.WriteLine( name );
}

刚才这两个查询定义和foreach循环在C#3.0声明中很平常。在这里,你可能会奇怪我们查询的是什么。Customers是什么?这是一种新型的嵌入式的SQL查询吗?不是的。同样的查询(下面的foreach代码也是)对一个SQL数据库,对一个DataSet,对一个在内存中的数组,或者对其他的多种数据同样适用。Customers是一个对象的集合:

Customer[] Customers;

Customers也可以是在DataSet中的一个DataTable:

DataSet ds = GetDataSet();
DataTable Customers = ds.Tables["Customers"];

Customers也可以是描述关系型数据库中的某个物理表的一个实体类:

DataContext db = new DataContext( ConnectionString );
Table<customer> Customers = db.GetTable<customer>();</customer></customer>

最后,Customers也可以是一个描述概念模型和映射一个关系型数据库的实体类:

NorthwindModel dataModel = new NorthwindModel();
ObjectQuery<customer> Customers = dataModel.Customers;</customer>

正如您所见,在LINQ中使用的像SQL一样的语法叫做查询表达式(query expression)。实现嵌入式SQL的语言仅定义了简单的语法来将SQL声明嵌入到不同的语言中,但是这些声明没有集成到这些语言本身的语法和类型系统中。例如,你不能在SQL声明中间调用一个用主语言写出的函数,虽然在LINQ中是可能的。LINQ不仅仅是查询数据库,也不仅仅是嵌入式SQL语句。

译注:

本篇专有词库:

[1]数据抽象层: data abstraction layer

[2]统一编程模型:uniform programming model

[3]对象图表: object graph

[4]简单对象访问协议:Simple Object Access Protocol

[5]关系模型: relational model

[6]阻抗失谐: impedance mistach

[7]一体适用: one size fits all

[8]查询表达式: query expression


上一篇:Introducing Microsoft LINQ--版权声明及本书简介

下一篇:LINQ工作原理,关系模型,XML操作

分享到:
评论

相关推荐

    Introducing Microsoft LINQ

    Introducing Microsoft LINQ.pdf 英文原版

    Introducing MicroSoft LINQ(英文版的 pdf格式)

    英文版的 介绍linq的linq to object linq to xml linq to sql 总共200多页 介绍得很详细

    LINQ+AJAX+Silverlight

    Introducing Microsoft LINQ 这是一本关于LINQ基础语法、LINQ to ADO.NET和LINQ to XML的实用指南,Introducing Microsoft ASP.NET AJAX 学习2007年发布的ASP.NET AJAX扩展包1.0的有关知识,包括概述以及使用...

    Microsoft.Press.Introducing.Microsoft.LINQ.May.2007.chm

    一本linq的介绍书

    LINQ.to.Objects.Using.C.Sharp.4.0.Edition.2010

    LINQ to Objects Using C# 4.0 starts by introducing the intention and benefits LINQ offers developers in general.talks to the motivation and basic concepts LINQ introduces to the world of writing .NET ...

    3LinQ学习指南.pdf

    1.LINQ for Visual C# 2008 2.C#+linq+to+sql.rar 3.LinQ学习指南.pdf 4.LINQ中文教程.doc 5.Manning.LINQ.in.Action.Jan.2008.1933988169.pdf 6.Press-Introducing.Microsof 7.Pro LINQ Language Integrated Query ...

    Introducing Delphi ORM.pdf

    通过在应用程序和数据访问语言(SQL、LINQ等)之间引入一个层,您将看到它们如何提供不同级别的抽象和工具,以便以与数据库无关的方式编写数据访问代码。在这本书的结尾,您将有信心使用范围广泛的Aurelius特性,使您...

    Beginning Microsoft Visual CSharp 2008 Wiley Publishing(english)

    Beginning: Microsoft Visual C# 2008 0 About the Authors 9 Credits 10 Contents 12 Introduction 30 Who This Book Is For 30 How This Book Is Structured 31 What You Need to Use This Book 34 ...

    Modern Data Access with Entity Framework Core

    C# developers, here’s your opportunity to learn the ins-and-outs of Entity Framework Core, Microsoft’s recently redesigned object-relational mapper. Benefit from hands-on learning that will teach ...

    C# 5.0 in a Nutshell, 5th Edition

    Introducing C# and the .NET Framework Chapter 2. C# Language Basics Chapter 3. Creating Types in C# Chapter 4. Advanced C# Chapter 5. Framework Overview Chapter 6. Framework Fundamentals Chapter 7. ...

    Pro C# 7: With .NET and .NET Core

    Chapter 12: LINQ to Objects Chapter 13: Understanding Object Lifetime Part V: Programming with .NET Assemblies Chapter 14: Building and Configuring Class Libraries Chapter 15: Type Reflection, Late ...

    Essential C# 4.0, 3rd Edition Mar 2010

    Essential C# 4.0, 3rd Edition (Microsoft .NET Development Series) 984 pages Publisher: Addison-Wesley Professional; 3 edition (March 20, 2010) Language: English ISBN-10: 0321694694 ISBN-13: 978...

    Visual.Studio.Lightswitch.2015.14842076

    How do you query data using LINQ and other syntax structures? How do you secure your application against malicious use? Visual Studio LightSwitch 2015 answers these questions and more as author Tim ...

    Code-First.Development.with.Entity.Framework.1784396273

    You will see how LINQ can be used with Entity Framework to give you access to stored data. You will then learn how to use Entity Framework to persist information in a Relational Database Management ...

    [超全]C# 2010(C# 4.0)VS2010最新学习资料

    Introducing .NET 4.0: with Visual Studio 2010 Pro Dynamic .NET 4.0 Applications Entity Framework 4.0 Recipes Visual Studio 2010 and .NET Framework 4 Training Kit Professional Windows 7 Development...

    Microsoft SharePoint 2010 Developer Reference

    1 Introducing Microsoft SharePoint 2010 . 3 What Is SharePoint? 3 Main Capabilities 4 Sites . 5 Communities 5 Content . 5 Search . 6 Insights 6 Composites 6 SharePoint Basic Concepts 7 SharePoint ...

    Essential C# 7 第六版 rough cut

    Author Mark Michaelis is a world-class C# expert: a long-time Microsoft MVP and Regional Director who also has served on Microsoft’s C# design review team. He presents a comprehensive tutorial and ...

    Csharp.6.0.and.the.NET.4.6.Framework.7th.Edition.1484213335.epub

    Chapter 24: Introducing LINQ to XML Chapter 25: Introducing Windows Communication Foundation Part VII: Windows Presentation Foundation Chapter 26: Introducing Windows Presentation Foundation and XAML...

    CSharp 3.0 With the .NET Framework 3.5 Unleashed(english)

    1 Introducing the .NET Platform 38 What Is .NET? 38 The Common Language Runtime (CLR) 40 The .NET Framework Class Library (FCL) 43 C# and Other .NET Languages 45 The Common Type System (CTS...

Global site tag (gtag.js) - Google Analytics