做者: 梅桦 发表于 2010-05-06 16:03 原文连接 阅读: 84 评论: 0html
LINQ,语言级集成查是Language INtegrated Query的意思,它是链接对象领域和数据领域的一座桥梁。能够经过C#,对各类数据源进行Linq查询:sql
sql数据库(LinqToSql),xml文档(LinqToXml),ado.net的数据集,以及支持IEnumerable或IEnumerable接口的任意对象集合。数据库
Linq查询通常分三个步骤进行:获得数据源——创建查询——执行查询。下面详细介绍查询。这些查询结合LinqPad来测试,关于LinqPad介绍请见:ide
http://www.cnblogs.com/jams742003/archive/2010/05/05/1728124.html测试
(一)基本查询spa
基本查询包括,获得数据源,查询条件,分组,排序,投影。.net
(1)经过字符串来演示code
在LinqPad上在statements模式下进行如下测试:orm
能够获得结果:xml
|
What |
a |
说明:
·数据源strTemps
·定义变量st
·条件,where,用来查找单词中含有字母a的单词
·结果排序,按单词长度降序
·投影,把单词添充到结果query
如今经过匿名类型对投影进行设置:将单词和单词的长度作为结果进行填充
结果:
|
|
含有字母a的单词 |
单词的长度 |
What |
4 |
a |
1 |
上边两种都是以语句方式进行的查询,也能够以方法方式进行查询:
结果同上,
经过方法进行查询时须要Lambda表达式,关于Lambda请见:
http://www.cnblogs.com/jams742003/archive/2009/12/23/1630737.html
其中的方法指的是扩展方法
下面,实现分组,为了演示分组功能,如今经过数据库来实现。
|
||
Unid |
Name |
Version |
2 |
宋江 |
5 |
38 |
张青 |
1 |
40 |
张清 |
1 |
41 |
武ww |
0 |
这张表是数据,如今以Version来分组:
查询以Version进行分组,且经过into selfGroup来对分组进行后续筛选,选择组内成员数在大于1的,结果是:
|
||||||||||||||||||||||||||||||||
|
如下经过数据功能来介绍查询方法
(二)排序
方法OrderByDescending,OrderBy,ThenBy,ThenByDescending
降序排列
结果:
|
90 |
55 |
25 |
12 |
1 |
(三)结果集操做
·Distinct:去重
·Except:返回一集合中存在,另外一集合不存在的结果
·Intersect:交集
·Union:并集
a |
b |
c |
1 |
2 |
3 |
1 |
2 |
3 |
a |
b |
c |
a |
b |
c |
1 |
2 |
3 |
4 |
5 |
6 |
(四)限定符
Any,All,Contains
Any用于判断是否存在元素
All 用于判断数据源中的元素是否所有知足条件
Contains用于判断数据源是否包含指定的元素