Linq的概念解析
在http://www.cnblogs.com/2018/category/262512.html 这些文章中提到
WCF Data Service和WCF RIA Service的使用,在实际的使用过程中会经常的使用linq,为此把这些概念解析一下。
序列
IEnumerable<T> ,这个类型是关键,LINQ的标准查询操作符都需要使用该类型对象作为参数
查询操作符
是指在LINQ查询上下文事业能够的、一系列扩展方法的集合,是实现linq的最重要的一类元素
预定义的标准查询操作符:
过滤 |
OfType, Where |
投影 |
Select, SelectMany |
分区 |
Skip, SkipWhile, Take, TakeWhile |
连接 |
GroupJoin, Join |
串联 |
Concat |
排序 |
OrderBy, OrderByDescending, Reverse, ThenBy, ThenByDescending |
分组 |
GroupBy, ToLookup |
集合 |
Distinct, Except, Intersect, Union |
转换 |
AsEnumerable, AsQueryable, Cast, ToArray, ToDictionary, ToList |
等同 |
SequenceEqual |
元素 |
ElementAt, ElementAtOrDefault, First, FirstOrDefault, Last, |
生成 |
LastOrDefault, Single, SingleOrDefault |
数量 |
DefaultIfEmpty, Empty, Range, Repeat |
聚集 |
All, Any, Contains |
查询表达式
查询表达式提供了一种继承于语言中的、用于编写查询语句的语法。编译器自动将其转换为对标准查询操作符的调用。
查询本操作符和查询表达是对应关系
查询操作符 |
查询表达式(C#) |
All |
无 |
Any |
无 |
Average |
无 |
Cast |
使用显式类型的范围变量,如 from int i in numbers |
Count |
无 |
Distinct |
无 |
GroupBy |
group … by |
GroupJoin |
join … in … on … |
Join |
join … in … on … |
LongCount |
无 |
Max |
无 |
Min |
无 |
OrderBy |
orderby |
OrderByDescending |
orderby … descending |
Select |
select |
SelectMany |
多个Frrom子句 |
Skip |
无 |
SkipWhile |
无 |
Sum |
无 |
Take |
无 |
TakeWhile |
无 |
ThenBy |
orderby …, … |
ThenByDescending |
orderby …, …descending |
Where |
where |
两种写法相同效果的例子
查询操作符 |
查询表达式 |
SampleData.Books .Where(book => book.Title == "Funny Stories") .OrderBy(book => book.Title) .Select(book => new {book.Title, book.Price}); |
from book in SampleData.Books where book.Title == "Funny Stories" orderby book.Title select new {book.Title, book.Price}; |
根据情况和语言中的对应限定关系选择使用。