linq中join实例

 

左外链接html

 

即使JOIN的右侧不存在于与左侧相等的键值,左侧包含的记录也照样返回。code

当右侧的链接的右侧没有左侧对应的元素时,内链接会忽略左侧元素。要想保留左侧元素,可使用作外链接。右侧被置为默认值,如:引用类型被置为空。 htm

 

例如get

 

CreateEntities(); 
var query = from c in customers 
    join o in orders on c.CustomerId equals o.CustomerId into os 
    from o2 in os.DefaultIfEmpty( 
        new Order { OrderId = 0, CustomerId = 0, Products = new List<Product>() }) 
    select new { c, o2 }; 
    foreach (var item in query) 
    { 
        Console.WriteLine("Customer Id:{0}, Name:{1}--Order Id:{0}",item.c.CustomerId, item.o2.OrderId); 
    }


 

 

内链接it

 

只有JOIN的两端都匹配到的记录,才被返回。class

选择左右两侧集合都含有相对应的元素。foreach

 

CreateEntities(); 
var query = from c in customers 
    join o in orders on c.CustomerId equals o.CustomerId 
    where o.OrderId == 2 
    select c; 
    foreach (var customer in query) 
    { 
        Console.WriteLine("Id:{0}, Name:{1}", customer.CustomerId, customer.Name); 
    }


 

 

分组联接List

 

实例select

 

CreateEntities(); 
var query = from c in customers 
    join o in orders on c.CustomerId equals o.CustomerId into os 
    select new { c, os }; 
    foreach (var item in query) 
    { 
        Console.WriteLine("Customer Id:{0}, Name:{1}", item.c.CustomerId, item.c.Name); 
        foreach (var o in item.os) 
        { 
            Console.WriteLine("--Order Id:{0}", o.OrderId); 
        } 
    }

 

备注引用

要实现Group Join咱们要引入一个关键字:into

 

 

 

文章转载自:    linq中join用法      http://www.studyofnet.com/news/400.html