在LINQ中,join可以实现3种类型的联接,分别是内部联接、分组联接、左外部联接。

  1. 内部联接:

    private static void UseInnnerJoin(){int[] intArray1 = { 5, 15, 25, 30, 33, 40 };int[] intArray2 = { 10, 20, 30, 50, 60, 70, 80 };var query1 = from val1 in intArray1join val2 in intArray2 on val1 % 5 equals val2 % 15select new { VAL1 = val1, VAL2 = val2 };foreach (var item in query1){Console.WriteLine(item);}}

    运行结果:

    { VAL1 = 5, VAL2 = 30 }
    { VAL1 = 5, VAL2 = 60 }
    { VAL1 = 15, VAL2 = 30 }
    { VAL1 = 15, VAL2 = 60 }
    { VAL1 = 25, VAL2 = 30 }
    { VAL1 = 25, VAL2 = 60 }
    { VAL1 = 30, VAL2 = 30 }
    { VAL1 = 30, VAL2 = 60 }
    { VAL1 = 40, VAL2 = 30 }
    { VAL1 = 40, VAL2 = 60 }
    
  2. 分组联接:可用于产生分层的数据结果,它将第一个集合中的每个元素与第二个集合中的一组相关元素进行分配。即使第一个集合中的元素在第二个集合中没有配对元素,也会为它产生一个空的分组对象。
    private static void UseGroupJoin(){int[] intArray1 = {5, 15, 25, 30, 33, 40};int[] intArray2 = {10, 20, 30, 50, 60, 70, 80};var query1 = from val1 in intArray1join val2 in intArray2 on val1 % 5 equals val2 % 15 into val2Groupselect new {VAL1 = val1, VAL2Group = val2Group };foreach (var item in query1){Console.WriteLine(item.VAL1);foreach (var subItem in item.VAL2Group){Console.WriteLine(subItem);}Console.WriteLine();}}
  3. 左外部联接:返回第一个集合中的所有元素,无论它是否在第二个集合中有相关元素。在LINQ中,通过对分组链接的结果调用DefaultIfEmpty()方法来执行左外部联接。DefaultIfEmpty()从列表中获取指定元素,如果列表为空,则返回默认值。
    private static void UseLeftJoin(){int[] intArray1 = { 5, 15, 25, 30, 33, 40 };int[] intArray2 = { 10, 20, 30, 50, 60, 70, 80 };var query1 = from val1 in intArray1join val2 in intArray2 on val1 % 5 equals val2 % 15 into val2Groupfrom grp in val2Group.DefaultIfEmpty()select new { VAL1 = val1, VAL2Group = grp };foreach (var item in query1){Console.WriteLine(item);}}

    运行结果:

    { VAL1 = 5, VAL2Group = 30 }
    { VAL1 = 5, VAL2Group = 60 }
    { VAL1 = 15, VAL2Group = 30 }
    { VAL1 = 15, VAL2Group = 60 }
    { VAL1 = 25, VAL2Group = 30 }
    { VAL1 = 25, VAL2Group = 60 }
    { VAL1 = 30, VAL2Group = 30 }
    { VAL1 = 30, VAL2Group = 60 }
    { VAL1 = 33, VAL2Group = 0 }
    { VAL1 = 40, VAL2Group = 30 }
    { VAL1 = 40, VAL2Group = 60 }
    

    左外部联接和分组联接虽然相似但并非一样。分组联接返回的查询结果是一种分层数据结构,需要使用两层foreach才能遍历它的结果。而左外部联接是在分组联接的查询结果上再进行一次查询,所以它在join之后还有一个from子句进行查询。

LINQ:使用join进行联接相关推荐

  1. LINQ 之 JOIN(2)

    LINQ之Join 分类: LINQ 2010-06-30 14:23 333人阅读 评论(0) 收藏 举报 适用场景:在我们表关系中有一对一关系,一对多关系,多对多关系等.对各个表之间的关系,就用这 ...

  2. left join(左联接) left join(左联接) left join(左联接)

    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录  right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录 inner join(等值连接) ...

  3. oracle等值连接与innerjoin,inner join(等值联接)、left join(左联接)、right join(右联接)用法及区别...

    inner join(等值连接) 只返回两个表中联结字段相等的行 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有 ...

  4. linq之join子句

    前面我们总结Linq查询子句总共有8个,join子句是我们讲解的最后一个子句.join子句也是相对比较复杂的,所以最后来讲.join子句可以处理两个数据源之间的联系,当然这两个数据源之间必须存在相关联 ...

  5. LINQ学习——JOIN

    一.JOIN的作用 1.使用联接来结合两个或更多的集合的数据. 2.联接操作接受两个集合然后创建一个临时的对象集合,每一个对象包含原始集合对象中的所有字段. Note:这里是包含而不是这个原实集合的字 ...

  6. linq to entity 左联接 右连接 以及内连接写法的区别(转)

    linq to entity 左连接 右连接 以及内连接写法的区别  还有就是用lambda表达式怎么写,那个效法效率高些? [解决办法] 左连右连还是内连这个其实你不需要关心.只需要根据实体的映射关 ...

  7. C# linq left join

    左连接查询 seleft a.*,b.column1,b.column2 from a left join b on a.id = b.id linq双表,多表连接查询 var list = from ...

  8. 在Linq to Entity 中使用lambda表达式来实现Left Join和Join

    1.读取用户和部门两个表的左连接: var sg = db.Users.GroupJoin(db.Departments, u => u.DepartmentId, d => d.Depa ...

  9. Linq、Lambda表达式详细总结(转)

    (一)输入参数 在Lambda表达式中,输入参数是Lambda运算符的 左边部分.它包含参数的数量可以为0.1或者多个.只有当输入参数为1时,Lambda表达式左边的一对小括弧才可以省略.输入参数的数 ...

最新文章

  1. python数据结构包括什么_Python中的数据结构详解
  2. PyTorch 可视化工具 TensorboardX
  3. 使用python xmodem 模块下载及上传文件
  4. HDFS(一) HDFS设计目标
  5. Summed-Area Variance Soft Shadow Mapping(SAVSM):二
  6. 荣耀30 Pro Geekbench跑分现身:麒麟990 5G SoC性能出众
  7. LINUX环境并发服务器的三种实现模型
  8. An Introduction to Asynchronous Programming and Twisted (2)
  9. scau 8633 回文划分
  10. java怎么将文件传到服务器,Java文件传到服务器
  11. ctf镜子里面的世界_在秋天遇见“冰雪世界”,好像老天给我变了个魔法
  12. 免费音效素材,拿走不谢。
  13. 为什么计算机不显示桌面工具栏,笔记本电脑开机后不显示桌面图标或任务栏怎么解决...
  14. 《君生我未生,我生君已老》详解
  15. 二分法查找——绝对值最小的数
  16. Openstack 高可用部署(Ocata版)
  17. 详解IP地址和Mac地址
  18. android 语音适配,Android多语言适配繁体中文
  19. 【IT微小说】CISO琳达的一天
  20. 蚂蚁即将上市:P7可获1200万元期权,千万身价!我酸了...

热门文章

  1. Censored! POJ - 1625(AC自动机 + dp +高精度模板)
  2. python中turtle库绘制图形_Python如何使用turtle库绘制图形
  3. Windows系统电脑常用快捷键
  4. python大数据工程师薪资待遇_2019年就业薪资,凭什么大数据工程师遥遥领先?...
  5. 一看就能上手的敏捷婚礼
  6. 自己使用的文本编辑器全部采用Tahoma字体
  7. 云计算的认识和看法_我对云计算的认识
  8. MPEG-DASH简介
  9. 使用腾讯云sms短信服务
  10. 易企秀资深前端架构师袁飞分享:移动H5开发如何避坑?