zoukankan      html  css  js  c++  java
  • LINQ的左连接、右连接、内连接

    1、左连接:

    var LeftJoin = from emp in ListOfEmployees
    join dept in ListOfDepartment
    on emp.DeptID equals dept.ID into JoinedEmpDept
    from dept in JoinedEmpDept.DefaultIfEmpty()
    select new 
    {
    EmployeeName = emp.Name,
    DepartmentName = dept != null ? dept.Name : null 
    };

    2、右连接:

    var RightJoin = from dept in ListOfDepartment
    join employee in ListOfEmployees
    on dept.ID equals employee.DeptID into joinDeptEmp
    from employee in joinDeptEmp.DefaultIfEmpty()
    select new 
    {
    EmployeeName = employee != null ? employee.Name : null,
    DepartmentName = dept.Name
    };

    3、内连接:

    var query = from t in entitiy.TB_GCGL_ADA_USER
    join p in entitiy.TB_GCGL_ZY_ZYK
    on t.ETPRS_CODE equals p.ETPRS_CODE

    select new TB_USER_ZYK
    {
    USER_ID = t.USER_ID,
    USER_NAME = t.USER_NAME,
    USER_PASSWORD = t.USER_PASSWORD,

    };

     

     

     

    public static void InnerJoinTest()//内链接

    {

    DemoDataContext context = new DemoDataContext();

    context.Log = Console.Out;

    //方式一

    var query = from tb1 in context.RoleRow

    join tb2 in context.RoleFunctionRow on tb1.RoleId equals tb2.RoleId

    select new { RoleId = tb1.RoleId, RoleName = tb1.EN_Name, FunctionId = tb2.FunctionId };

    ObjectDumper.Write(query);

    //方式二

    var query2 =

    from tb1 in context.RoleRow

    from tb2 in context.RoleFunctionRow

    where tb1.RoleId == tb2.RoleId

    select new { RoleId = tb1.RoleId, RoleName = tb1.EN_Name, FunctionId = tb2.FunctionId };

    ObjectDumper.Write(query2);

    //var query3= from tb1 in context.RoleRow

    // join tb2 in context.RoleFunctionRow on tb1.RoleId equals tb2.RoleId

    // join tb3 in context.FunctionRow on tb2.FunctionId equals tb3.FunctionId

    // select new { RoleId = tb1.RoleId, RoleName = tb1.EN_Name,FunctionId=tb2.FunctionId,FunctionName=tb3.EN_Name }

    }

    public static void LeftJoinTest()//左右链接

    {

    int minRoleId = 1;

    DemoDataContext context = new DemoDataContext();

    context.Log = Console.Out;

    var query = from tb1 in context.RoleRow

    join tb2 in context.RoleFunctionRow on tb1.RoleId equals tb2.RoleId into tempT

    from tb3 in tempT.DefaultIfEmpty()// 关键在into tempT from tb3 in tempT.DefaultIfEmpty()

    where tb1.RoleId > minRoleId

    select new { RoleId = tb1.RoleId, RoleName = tb1.EN_Name, FunctionId = tb3.FunctionId };

    ObjectDumper.Write(query);

    }

  • 相关阅读:
    db2缓冲池调优
    linux下安装rpm出现error: Failed dependencies
    linux下挂载磁盘
    db2 常见错误以及解决方案[ErrorCode SQLState]
    db2数据库表操作错误SQL0668N Operation not allowed for reason code "1" on table "表". SQLSTATE=57016的解决方法
    db2用户权限赋值
    db2查看当前用户模式及当前用户的权限
    loadrunner常用函数整理
    书上的脚本案例
    hdu 1711---KMP
  • 原文地址:https://www.cnblogs.com/suizhikuo/p/3320194.html
Copyright © 2011-2022 走看看