* 投影操作符:
Select && SelectMany
SelectMany 操作符提供了将多个from子句组合起来的功能,它将每个对象的结果合并成单个序列
1)var query = from e in db.Employees
from o in e.Orders
select o;
2)var query = school.Classes.SelectMany(b => b.Students).Where(i => i.Sex == 0);
* 限制操作符:where
* 排序操作符:OrderBy、OrderByDescending、ThenBy、ThenByDescending和Reverse
Enumerable.Reverse<TSource> 将会把序列中的元素按照从后到前的循序反转。需要注意的是,Reverse方法的返回值是void
var q = db.Employees.Select(e => e.FirstName).ToList();
q.Reverse();
* 联接操作符:Join和GroupJoin (http://msdn.microsoft.com/zh-cn/library/bb397908.aspx)
Join操作符:类似于T-SQL中的inner join (Joins two sequences based on key selector functions and extracts pairs of values.)
var query = from p in db.Products
join c in db.Categories on p.CategoryID equals c.CategoryID
where p.CategoryID == 1
select p;
var query = db.Products
.Join
(
db.Categories,
p => p.CategoryID,
c => c.CategoryID,
(p, c) => p
)
.Where(p => p.CategoryID == 1);
foreach (var item in query)
{
Console.WriteLine(item.ProductName);
}
GroupJoin操作符:根据键选择器函数联接两个序列,并对每个元素的结果匹配项进行分组(Joins two sequences based on key selector functions and groups the resulting matches for each element.)
var query = from c in db.Categories
join p in db.Products on c.CategoryID equals p.CategoryID into r
select new
{
c.CategoryName,
Products = r
};
var query = db.Categories
.GroupJoin
(
db.Products,
c => c.CategoryID,
p => p.CategoryID,
(c, p) => new
{
c.CategoryName,
Products = p
}
);
foreach (var item in query)
{
Console.WriteLine("{0} =>", item.CategoryName);
foreach (var p in item.Products)
{
Console.WriteLine(p.ProductName);
}
Console.WriteLine("----------------------------------------------");
}
* 分组操作符:GroupBy
* 串联操作符:Concat