LINQ基本子句查询
linq表达式的作用:就是从给定一个或多个数据源中,按照指定的条件检索数据,检索出的结果按照指定的类型或表现形式返回.
linq表达式关键字:
from:指定数据源和范围变量
where:根据布尔表达式从数据中筛选元素.
select:指定查询结果中的元素所具有的类型或表现形式.
group:对查询结果按照键值进行分组.
into:提供一个标识符,它可以充当对join.group或select子句结果的引用.
orderby:对查询出的元素进行排序.
join:按照两个指定匹配条件来连接两个数据源.
from子句:
例如:string [] values={"张三","王武","王麻子"};
var value=from v in values where v.Length>2 select v;
注释:v是范围变量,values是变量,v的作用域存在于当前的LINQ表达式中.如果没有指定数据类型,并且数据源类型实现了IEnumerable<T>接口, 编译器会根据数据源的数据类型自动推断出v的数据类型.数据源仅仅实现了IEnumerable<T>接口.
LINQ表达式的数据源可以是List<T>,int[],ArrayList,string[]等各种实现了IEnumerable或泛型IEnumerable<T>接口的对象集合.
另外由于string对象其实是一个字符数组,所以单个字符串对象也可以作为LINQ表达式的数据源.
where子句:它是LINQ表达式的元素筛选机制,除了开始和结束的位置,它几乎可以用在LINQ表达式的任意位置上.
在一个LINQ表达式中,可以有where子句,也可以没有,可以有一个,也可以有多个,运用了逻辑关系:如"&&"和"||".
LINQ表达式遵循C#语言构造,比较符号是双等号"==",而不是SQL惯用的等号"=".
动态谓词的筛选:
Contains方法几乎存在于所有的.NET集合或数组类型中,Contains表示:对象是否包含某个对象在里面.进行实现动态谓词的
筛选只要建立一个实现了Contains的集合或数组,然后把需要查询的谓词添加进去,在LINQ表达式的where子句中使用即可.
Select子句:查询表达式中的select及所接子句是放在表达式最后,并把子句中的变量返回,也就是返回结果.select子句可以进行数据转换工作,
即投影,select子句产生的内容,取决于前面所有子句和其自身的表达式执行后的结果.
Group子句:Group子句返回的是一个基于IGrouping<TKey,TElement泛型接口的对象序列,TKey是这个接口键的对象类型,在用于group子句时,数据类型会由编译 器, 它一般被用来存储分组的键值,IElement是该接口值的对象类型,用于存储分组结果,访问这个值很方便,遍历基于这个类型就是遍历这个值.
into子句:into子句作为一个临时标示符,用group,select和join子句中.用于数据转移.into子句转移后前面的对象还可以访问.
排序子句:传统的语句中只有order by,但是在LINQ表达式的排序方式分为:
OrderBy,OrderByDescending,TheyBy,TheyByDescending,Reverce(将序列中的元素反转).
join子句:两个数据源的属性进行相等比较,用join关键字将两个数据源进行关联.
join子句使用Equals关键字进行相等比较,而不是常用的双等号.