第12章 LINQ to SQL数据
- 格式:ppt
- 大小:430.50 KB
- 文档页数:23


在上两篇我介绍了C#3.0新语特性和改进,这些新特性在我们编写程序时为我们提供了非常大的帮助。从这篇开始,我们开始一起来探讨LINQ。
LINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性。已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据, 智能感知、静态类型等强类型语言的好处。并且它同时还使得查询可以方便地对内存中的信息进行查询而不仅仅只是外部数据源。
LINQ定义了一组标准查询操作符用于在所有基于.NET平台的编程语言中更加直接地声明跨越、过滤和投射操作的统一方式,标准查询操作符允许查询 作用于所有基于IEnumerable接口的源,并且它还允许适合于目标域或技术的第三方特定域操作符来扩大标准查询操作符集,更重要 的是,第三方操作符可以用它们自己的提供附加服务的实现来自由地替换标准查询操作符,根据LINQ模式的习俗,这些查询喜欢采用与标准查询操作符相同的语 言集成和工具支持。
我们来总体看看LINQ架构
在.NET3.5下,微软为我们提供了一些命名空间
LINQ包括五个部分:LINQ to Objects、LINQ to DataSets、LINQ to SQL、LINQ to Entities、LINQ to XML。
LINQ to SQL全称基于关系数据的.NET语言集成查询,用于以对象形式管理关系数据,并提供了丰富的查询功能。其建立于公共语言类型系统中的基于SQL的模式定 义的集成之上,当保持关系型模型表达能力和对底层存储的直接查询评测的性能时,这个集成在关系型数据之上提供强类型。
LINQ to XML在System.Xml.LINQ命名空间下实现对XML的操作。采用高效、易用、内存中的XML工具在宿主编程语言中提供XPath/XQuery功能等。
说了这么多,我们还是用一个简单的实例说明一下LINQ带来的体验。 第一步:建立dbml(Database Mark Language。数据库描述语言,是一种xml格式的文档,用来描述数据库)文件,以Northwind数据库为例,上述Customers类被映射成一个表,对应数据库中的 Customers表
linq转化为sql语句的方法
Linq转化为SQL语句的方法
概述
Linq(Language Integrated Query)是微软推出的一种用于查询和操作数据的统一编程模型。它可以在不同的数据源上执行查询,例如关系型数据库、XML文档等。在开发过程中,我们常常需要将Linq表达式转化为相应的SQL语句,以便对数据库进行操作。本文将详细介绍多种将Linq转化为SQL语句的方法。
1. LINQ to SQL
基本概念
LINQ to SQL是一种将LINQ查询转化为SQL语句的方法。它是
Entity Framework的一部分,提供了一种直接在.NET应用程序中使用对象来表示和操作关系型数据库的方式。在LINQ to SQL中,可以通过DataContext对象来执行查询,并将查询结果转化为SQL语句。
示例代码
using System;
using ;
using ;
public class Program {
public static void Main()
{
// 创建DataContext对象,连接数据库
DataContext context = new DataContext("Data Source=.;Initial Catalog=MyDatabase;Integrated Security=True");
// 创建查询表达式
var query = from c in ()
where == "Beijing"
select c;
// 执行查询并获取SQL语句
string sql = (query).CommandText;
// 输出SQL语句
预备知识
什么是Linq to sql
Linq to sql(或者叫DLINQ)是LINQ(.NET语言集成查询)的一部分,全称基于关系数据的 .NET 语言集成查询,用于以对象形式管理关系数据,并提供了丰富的查询功能,它和Linq to xml、Linq to objects、Linq to dataset、Linq to entities等组成了强大的LINQ。
要学好LINQ查询语法,就不得不先理解C# 3.0的一些新特性,下面一一简单介绍。
隐含类型局部变量
var age = 26;
var username = "zhuye";
var userlist = new [] {"a","b","c"};
foreach(var user in userlist)
Console.WriteLine(user);
纯粹给懒人用的var关键字,告诉编译器(对于CLR来说,它是不会知道你是否使用了var,苦力是编译器出的),你自己推断它的类型吧,我不管了。但是既然让编译器推断类型就必须声明的时候赋值,而且不能是null值。注意,这只能用于局部变量,用于字段是不可以的。
匿名类型
var data = new {username = "zhuye",age = 26};
Console.WriteLine("username:{0} age:{1}", ername, data.age);
匿名类型允许开发人员定义行内类型,无须显式定义类型。常和var配合使用,var用于声明匿名类型。定义一个临时的匿名类型在LINQ查询句法中非常常见,我们可以很方便的实现对象的转换和投影。
扩展方法
public static class helper
{
public static string MD5Hash(this string s)
{
return
使用LINQ处理数据
.NET Language-Integrated Query(LINQ,语言集成查询)是微软公司提供的一项新技术,它将查询操作直接引入到.NET
Framework 3.5所支持的编程语言(如C#、Visual Basic等)中,从而直接实现查询功能。本章将讲解使用LINQ处理的方法,主要介绍以下知识点:
* LINQ概述;
* LINQ查询子句;
* 使用LINQ维护User表的数据。
通过本章的学习,读者将可以了解使用LINQ查询集合中的数据的基本操作方法,并使用LINQ处理数据库中的数据的方法。
13.1 LINQ概述
查询(Query)是一种从给定的数据源中检索满足指定条件的数据表达式。查询也是一组指令,这些指令可以从一个或多个给定的数据源中检索数据,并指定检索结果的数据类型和表现形式。
传统上,查询技术往往使用字符串来表示查询操作,如查询关系数据库的SQL语句、查询XML结构数据的XQuery等。在这些查询操作中,一般不会检查被查询数据的类型。同时,这些查询操作往往与编程语言处于一种相对孤立的状态。
LINQ(.NET Language-Integrated Query、语言集成查询)也是一种查询技术,它最大的特点就是能够把查询操作直接引入到.NET Framework 3.5所支持的编程语言(如C#、Visual Basic等)中,并整合为一体。LINQ查询表达式是由一组用类似于SQL或XQuery的声明性语法编写的子句组成。每一个子句可以包含一个或多个C#表达式,而这些表达式本身又可能是查询表达式或包含查询表达式。LINQ为.NET Framekwork 3.5所支持,它包括以下4个主要组件或技术。
* LINQ to Objects:查询IEnumerable或IEnumerable类型的集合,即查询任何可枚举的集合,如数组(Array和ArrayList)、泛型列表(List)、字典(Dictionary),以及用户自定义的集合。