http://xiangai.taobao.com
http://shop148612228.taobao.com

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

}

posted @ 2013-09-13 20:46  万事俱备就差个程序员  阅读(337)  评论(0编辑  收藏  举报

http://xiangai.taobao.com
http://shop148612228.taobao.com
如果您觉得对您有帮助.领个红包吧.谢谢.
支付宝红包
微信打赏 支付宝打赏