C# 3.0入门系列(一)

谈到dlinq,就不得不先说linq。让我们先看看什么是linq。linq是Language Integrated Query的缩写。那么事实上dlinq就是Database Language Integrated Query的缩写。linq和dlinq最大的区别就在与linq是对内存进行操作,而dlinq的操作对象为数据库。

我们先来看一个linq的例子。在这之前,你需要安装s2008 beta2版本。可以到

http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx 下载。如果,你的机器上是vs2005的英文版,你还需要安装一个linq preview版本。你可以到下面地址去下载。

http://www.microsoft.com/downloads/details.aspx?familyid=1e902c21-340c-4d13-9f04-70eb5e3dceea&displaylang=en

微软也提供了好多学习的地方。先给出几个链结。

http://msdn.microsoft.com/data/ref/linq/

http://msdn.microsoft.com/data/ref/linq/default.aspx?pull=/library/en-us/dndotnet/html/linqprojectovw.asp

http://msdn.microsoft.com/vcsharp/future/

好,我们先来看一个linq的例子。这个例子可以从linq的说明文档上得到。

the linq sample

1using System;
2using System.Query;
3using System.Collections.Generic;
4
5class app …{
6 static void Main() …{
7  string[] names = …{ "Burke", "Connor", "Frank",
8            "Everett", "Albert", "George",
9            "Harris", "David" };
10
11  IEnumerable<string> expr = from s in names
12                where s.Length == 5
13                orderby s
14                select s.ToUpper();
15
16  foreach (string item in expr)
17   Console.WriteLine(item);
18 }
19}
20

你可能感觉比较陌生。放心,这大概是第一次看到缘故。在这里像 from,where,orderby, select等都是linq的保留字,都该用蓝色显示的,但是好像cnblogs还没有开始支持。所以插入代码时,他们就被当作普通字符了。

其实,query expression看起来和sql语句很像。 比如 select * from table1 where column1 = "";

我第一次看到linq时,就感觉是写在程序里的sql语句。只不过,以前我们都是用string类型形成一个sql语句,然后通过command或adapter传到sql server中。而现在,感觉就像把sql语句直接当成程序代码来实现。这只不过是我们的一个错觉。

这个例子,只不过是从一个string的数组中,提取出长度为5的,并且把提取的数据全部变成大写。IEnumerable<string> 使用到了c#2.0中的泛型。 该列子的结果,返回一个数据集,存放到expr中。 在这里,从那个数据集中取的结果,是用in 表达的,如列所示,from s in names , 在names集合中,取出s。s代表一条条纪录。where 表示条件,orderby 表示按什么排序。select 选择那些字段组成变量。这里,你可能会觉得奇怪,s变量在那里声明的呢。我第一看到这里的时候,也感到奇怪。其实s变量是names变量里的元素,你在in names 时,已经声明了s变量。

在这个列子中,大家可以先感受一下linq,在随后的章节中,我会为大家介绍更多。对内存数组的查询,并不能显示出linq的强大功能,对数据库的操作,才使得linq更加具有实际意义。在随后的章节中,我将逐渐介绍dlinq的语法。

时间: 2024-09-17 19:52:47

C# 3.0入门系列(一)的相关文章

C# 3.0入门系列(十)-之Join操作

本节讲join操作.我们知道,T-sql中,有三种最基本的join,inner join, left join, 和right join. 而dlinq并不支持right join.道理很简单,right join以right表为基础,left表中没有对应记录的,将以null值填充.而dlinq以left表做为主表创建对象.如果一个对象为null,你如何获取它的其他的属性呢? 在C# 3.0入门系列(四)-之Select操作一文中,我们提到了query expression首先会被翻译成标准的A

C# 3.0入门系列(五)-之Where操作

从本节开始,本文正式更名为C#3.0入门系列.先发布一则消息,VS2007 Beta版本已经发布咯,下载地址: http://www.microsoft.com/downloads/details.aspx?FamilyID=1FF0B35D-0C4A-40B4-915A-5331E11C39E6&displaylang=en 大家快去下载呀,我也好和大家一起体验该版本最新功能呀. dlinq也更名为linq to sql.本文也跟着做相应变化,稍候,我会去更新前面的文章.我们先接着讲linq的

C# 3.0入门系列-目录导航

1 C# 3.0 入门系列(一) 从linq开始引C# 3.0. 2 C# 3.0入门系列(二) 数据库的准备,引入Linq To Sql的准备. 3 C# 3.0入门系列(三) 第一个Linq To Sql工程. 4 C# 3.0入门系列(四)-之Select操作 Select语法. 5 C# 3.0入门系列(五)-之Where操作 Where操作语法. 6 C# 3.0入门系列(六)-之OrderBy操作 OrderBy 操作语法. 7 C# 3.0入门系列(七)--之OR工具介绍 C# 3

C# 3.0入门系列(十二)-Lambda表达式中Lifting

Lambda表达式是由匿名方法演化而来的更加高级的形式.关于匿名方法,请参阅http://msdn.microsoft.com/msdnmag/issues/04/05/C20/.关于Lambda表达式的演化,请参阅http://msdn.microsoft.com/msdnmag/issues/07/06/csharp30/default.aspx?loc=zh.英文原版为http://msdn.microsoft.com/msdnmag/issues/07/06/CSharp30/. 1,L

C# 3.0入门系列(七)--之OR工具介绍(上)

--不得不再次给关注dlinq的朋友道歉了.好久都没有更新blog了.因为工作的变动,还要赶期限,没有时间关注这里了. 先发布一则消息.Orcas Beta1, 这个才是beta1,可以到http://www.microsoft.com/downloads/details.aspx?FamilyID=f10fb5df-e369-4db4-b9a7-845dbf793368&DisplayLang=en 下载.5月1号的版本.最早4月19号就出来过一个,只是没有在意.还有一个http://www.

C# 3.0入门系列(十一)-之In, Like操作

有这么一个例子,寻找一个表中的某个字段介于某个给定的集合该怎么办?Sql写起来很简单,比如:Select * from table where id in (2,3, 4, 5). 就是寻找id字段为这个给定的集合(2,3, 4, 5)内的值.那Linq to Sql该怎么做呢?一个字,简单. In Operator 比如,我们想要查找,"AROUT", "BOLID" 和 "FISSA" 这三个客户的订单.该如何做呢?Linq to Sql是这

C# 3.0入门系列(九)-之GroupBy操作

有朋友反馈说我提供的sample不能编译.大概是版本的问题,可以到http://msdn2.microsoft.com/en-us/bb330936.aspx下载for beta1的版本.本节接着讲groupby. 上一节,我们讲了如何理解groupby返回的结果.本节会延这个思路阐述下去.先来看下面的例子 GroupBy操作中Select的匿名类 var q = from p in db.Products group p by p.CategoryID into g select new {

C# 3.0入门系列(四)-之Select操作

先给关注dlinq的朋友们道歉,最近工作实在忙,没有时间来写blog.从本节开始,我们讲dlinq语法咯.我们先从select子句讲起.看下面的例子. var q = from c in db.Customers select c.ContactName; 这是一个最简单的dlinq查询语句,查询得到联系人的名字.在这里,我需要提醒下大家的是,像这个语句只是个声明,dlinq并没有真正把数据取出来,只有当你需要该数据的时候,它才会帮你去取,这就是延迟加载(deferred loading).如果

C# 3.0入门系列(二)

在第一篇中,我已经和大家简单介绍了linq.也和大家提起linq是C# 3.0里的一个特性.不过,你去装linq priview时,你会发现,它提供了许多vb的linq代码.从现在的情况看,linq会被移植到.net framework下.在本篇中,笔者将开始更加详细的介绍dlinq.同时,也会介绍很实用的技巧和方法.在这之前,你需要安装s2008 beta2版本.可以到 http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx 下载.如果,你