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

你可能感觉比较陌生。放心,这大概是第一次看到缘故。在这里像 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的语法。
http://www.cnblogs.com/126/archive/2006/08/14/476800.html
2
0
(请您对文章做出评价)
» 下一篇:C# 3.0入门系列(二)
posted @ 2006-08-14 21:09 Tom Song 阅读(17176) 评论(40)  编辑 收藏 所属分类: C# 3.0

  回复  引用  查看    
#1楼2006-08-14 22:46 | aspnetx      
关注
  回复  引用    
#2楼2007-01-29 15:33 | 过路人[未注册用户]
开始学习...
  回复  引用    
#3楼2007-01-30 14:32 | longer[未注册用户]
vs2005需要E文版的吗?
我有装中文版,可就提示我没装vs2005!

  回复  引用  查看    
#4楼[楼主]2007-01-30 15:45 | 宋国安      
是的,linq preview只支持英文版
  回复  引用  查看    
#5楼2007-04-20 09:58 | Freeman Shen      
学习
  回复  引用    
#6楼2007-06-30 14:00 | ep[未注册用户]
学习 看完后,想不通 这和 拼字串 查询 有什么区别
  回复  引用  查看    
#7楼2007-07-11 15:07 | 伍迷      
LINQ Preview (May 2006).msi为何下载后不能安装,非要使用VS2005的英文版吗?我现在中文版已经使用很久,如何解决这个问题?

  回复  引用  查看    
#8楼[楼主]2007-07-11 15:45 | 宋国安      
@伍迷
beta2 马上就出来了,等几天吧。

  回复  引用  查看    
#9楼[楼主]2007-07-11 15:48 | 宋国安      
@ep
差别很大。拼字符串的,不能编译,不能提前检查错误,不能预防sql 注入。

  回复  引用    
#10楼2007-07-31 14:43 | Young Peng[未注册用户]
哪有VS2005英文版下啊....
VS2008 可以运行吗?

  回复  引用  查看    
#11楼[楼主]2007-07-31 14:49 | 宋国安      
这里提到的linq preview,是专门为vs2005的。你去下个vs2008的beta2吧.就不要装linq preview了。

到这里下载
http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx

  回复  引用    
#12楼2007-07-31 15:07 | Young Peng[未注册用户]
我在装VS2008
我还要NORTHWND数据库啊....
linq preview 我装不了....
可以发给linq preview 的 NORTHWND 数据库给我吗? SQL 2005的
apengyang@126.com

  回复  引用  查看    
#13楼[楼主]2007-07-31 15:15 | 宋国安      
sample 里有的。
http://msdn2.microsoft.com/en-us/bb330936.aspx

在SampleQueries\Data 目录下。

  回复  引用  查看    
#14楼2007-07-31 15:31 | Young Peng      
@宋国安
谢谢,老大啊!

  回复  引用  查看    
#15楼2007-07-31 17:06 | Young Peng      
老大,我下的那个VS2008的...那个数据库附加不上去啊.....
只有 NORTHWND.MDF文件,没有日志文件....

  回复  引用  查看    
#16楼[楼主]2007-07-31 17:25 | 宋国安      
感谢你发现的问题。我们会尽快修复这个问题。我已把该数据库的备份发到你信箱.
  回复  引用  查看    
#17楼2007-08-04 21:07 | 镜涛      
开始学习!
  回复  引用    
#18楼2007-08-15 10:16 | boombastic2[未注册用户]
写的挺不错,单凭这份学习新技术的热情就挺值得我佩服的
  回复  引用  查看    
#19楼2007-09-28 12:16 | 高海东      
开始学习
  回复  引用  查看    
#20楼2007-12-25 10:41 | 马可香蕉      
学习···
  回复  引用  查看    
#21楼2008-01-19 19:39 | 浪客剑心      
学习中....
  回复  引用    
#22楼2008-04-10 11:04 | aahu[未注册用户]
学习中……
  回复  引用  查看    
#23楼2008-04-29 00:41 | Bēniaǒ      
刚开始着手学习LinQ
收藏了.

  回复  引用    
#24楼2008-05-20 17:51 | wentao2005xt[未注册用户]
刚在学习。。。
  回复  引用    
#25楼2008-07-01 11:07 | qingxingmeng 青星梦[未注册用户]
呵呵,学习
文韬来的早呀。

  回复  引用  查看    
#26楼2008-08-26 14:22 | WCJ      
楼主,给我发一份NORTHWND.MDF的文件,谢谢
邮箱是:fywz-wcj@163.com

  回复  引用    
#27楼2008-10-31 00:04 | trueman_hu[未注册用户]
我设计了更好的LINQ语法,以博主的入门例子说明:
select string.ToString() from names where string.Length == 5 order by string

同样,update和insert也可以如下设计:
update names set string = string.ToUpper()
insert into names values("Hello, LINQ!")

大家以为如何?

  回复  引用    
#28楼2008-12-04 14:52 | win[未注册用户]
cs101sample 哪里下载?
  回复  引用    
#29楼2008-12-09 23:05 | Test12[未注册用户]
Test
  回复  引用    
#30楼2009-04-12 13:58 | YONKER[未注册用户]
LINQ技术是vs2008最新的技术,需要用2008工具,本人有全套工具,需要的话加我,写明来意
  回复  引用    
#31楼2009-04-12 13:59 | YONKER[未注册用户]
LINQ技术是vs2008最新的技术,需要用2008工具,本人有全套工具,需要的话加我,写明来意 qq451900800
  回复  引用    
#32楼2009-08-12 11:32 | tctcwfg[未注册用户]
还没用到08的,先预热下
  回复  引用  查看    
#33楼2009-08-18 09:05 | Kid Wang      
好,就缺这个,谢谢啦LZ
  回复  引用  查看    
#34楼2009-08-27 23:57 | e路狂奔      
比楼主晚学2年。。。。。。。。。。。。。。。。。。。。。。
  回复  引用  查看    
#35楼2009-09-14 10:14 | 杨强      
不错。学习了