linq中join实例

28 篇文章 1 订阅

 

左外连接

 

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

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

 

例如

 

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); 
    }


 

 

内连接

 

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

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

 

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); 
    }


 

 

分组联接

 

实例

 

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值