zoukankan      html  css  js  c++  java
  • Linq to sql 中如何进行 left join

    可以用 into 语法,配合 DefaultIfEmpty() 方法加载右侧表中的空值。
    例子:

    var query =
        from r 
    in db.Roles
        join sr 
    in
            (
            from ss 
    in db.StaffInRoles
            
    where ss.StaffId == staffId
            select ss
            )
            on r.Id equals sr.RoleId
            into x

        from y 
    in x.DefaultIfEmpty()
        select 
    new RoleInfo
        {
            RoleId 
    = r.Id,
            RoleName 
    = r.Name,
            IsSet 
    = y != null
        };


    注意这里最后可以通过 y != null 来判断右值是否为空。

    这个 Linq to sql 语句生成的对应 SQL 为:

    exec sp_executesql N'SELECT [t0].[Id] AS [RoleId], [t0].[Name] AS [RoleName], 
        (CASE 
            WHEN [t2].[test] IS NOT NULL THEN 1
            ELSE 0
         END) AS [IsSet]
    FROM [Role] AS [t0]
    LEFT OUTER JOIN (
        SELECT 1 AS [test], [t1].[StaffId], [t1].[RoleId]
        FROM [StaffInRole] AS [t1]
        ) AS [t2] ON ([t0].[Id] = [t2].[RoleId]) AND ([t2].[StaffId] = @p0)
    ',N'@p0 int',@p0=1


    over.
  • 相关阅读:
    linux常见的基本操作命令
    CentOS-7安装mongodb
    分布式CAP理论
    Spring-boot2.X整合Apache ActiveMQ5.X
    Apche ActiveMQ5.X介绍及CentOS7的安装
    初识Java消息服务JMS
    初始Apache-Shiro权限认证Web知识点
    Java定时任务总结
    Apache-Shiro自定义Realm实战
    Java 作业题1
  • 原文地址:https://www.cnblogs.com/RChen/p/1250736.html
Copyright © 2011-2022 走看看