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