• Linq 内联接、左外联接、分组联接


    微软官方的教程如下:
    在自己的项目中应用到了内联接和左外联接,而且是一起应用的;项目需求是这样的,在查询组织机构(B_Organizations)信息时,需要把类别名称和父机构的名称查询出来,这就需要与字典表(B_DataDictionaries)实施内联接、与自己实施左外联接(即便组织机构的ParentID在从表中没有对应记录,或者说与从表的OrganizationsID没有对应,也照样输出,默认是null,需自行处理成空字符串)。
    Linq查询如下:
    from org in B_Organizations
    join dic in B_DataDictionaries on org.TypeID equals dic.DataID
    join org2 in B_Organizations on org.ParentID equals org2.OrganizationID into groupOrg2
    from o2 in groupOrg2.DefaultIfEmpty()
    select new {
        org.OrganizationName,
        org.OrganizationCode,
        dic.DataName,
        ParentOrganizationName = (o2 == null ? "" : o2.OrganizationName)
    }

    核心表B_Organizations,简称org。在关键字equals左边可以看到整个查询只为两个字段服务:org.TypeID、org.ParentID。
    普通的join,其实就是Inner Join,所以在Select从句中,直接 dic.DataName便可以;

    而左外联结Left Outer Join是需要 DefaultIfEmpty()方法配合的,所以需要把 org2 的联接集合临时放入 groupOrg2中:

    from o2 in groupOrg2.DefaultIfEmpty()

    那么在 Select从句中,从 o2 中便可以获取到 OrganizationName。

  • 相关阅读:
    NET 获取实例所表示的日期是星期几
    NET npoi 保存文件
    快速排序
    JAVA poi 合并单元格
    JAVA poi 帮助类
    JAVA 字符串编码转换
    NET npoi 合并单元值处理
    NET npoi帮助类
    Task的暂停,继续,取消
    .net ref与out之间区别
  • 原文地址:https://www.cnblogs.com/luoxiaonet/p/2490384.html
Copyright © 2020-2023  润新知