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

    }

  • 相关阅读:
    react 起手式
    获取元素CSS值之getComputedStyle方法熟悉
    js设计模式
    es6笔记5^_^set、map、iterator
    Flux --> Redux --> Redux React 入门 基础实例使用
    http协议与内容压缩
    C程序中唯一序列号的生成
    动态设置布局LayoutInflater
    构造Scala开发环境并创建ApiDemos演示样例项目
    BZOJ 2525 Poi2011 Dynamite 二分答案+树形贪心
  • 原文地址:https://www.cnblogs.com/suizhikuo/p/3320194.html
Copyright © 2020-2023  润新知