Linq 整理(一)

* 投影操作符:
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
posted @ 2014-10-22 14:39  clark wei  阅读(105)  评论(0)    收藏  举报