Linq左连接思路以及写法

 

  1. Linq左连接是左表与右表连接时,无论右边是否有跟左表对应的数据都能查询得出来,只不过查询出来得数据为空而已,什么是左表就取决于,你先写那一张表,哪张表就是左表,然后后写得那张表就是右表,。

Linq左连接思路以及写法_第1张图片

代码结构:from 自定义左表名称 in 实体模型里面得数据表格

        Join 自定义右表模型 in 实体模型里面得数据表格 on 自定义左表.连接右表的字段 equals 自定义右表.连接的字段 into 自定义表名称

如图所示:

Linq左连接思路以及写法_第2张图片

那么这个新的表就包含了,两种表的数据,它们是列表的形式,所以我们要查里面的数据,就可以通过Where语句来查,也可以把它放在一个新建表格里面,这样就可以直接点出里面的值了,完整代码:

var RepairCliemtData = (from tbRepairClient in myModels.S_RepairClient//维修客户表

                                    join tbCar in myModels.S_Car on tbRepairClient.RepairClientID equals tbCar.RepairClientID into xinde1

                                    from KECHE in xinde1.DefaultIfEmpty()

                                    join tbInsuranceDetail in myModels.S_InsuranceDetail on tbRepairClient.RepairClientID equals tbInsuranceDetail.RepairClientID into xinde2

                                    from KEBAO in xinde2.DefaultIfEmpty()

                                    join tbClientArea in myModels.S_ClientArea on tbRepairClient.ClientAreaID equals tbClientArea.ClientAreaID into xinde3

                                    join tbEmployee in myModels.S_Employee on tbRepairClient.EmployeeID equals tbEmployee.EmployeeID into xinde4

                                    join tbDepartment in myModels.S_Department on xinde4.Select(m => m.EmployeeID).FirstOrDefault() equals tbDepartment.DepartmentID into xinde5

                                    join tbClientLevel in myModels.S_ClientLevel on tbRepairClient.ClientLevelID equals tbClientLevel.ClientLevelID into xinde6

                                    join tbClientSource in myModels.S_ClientSource on tbRepairClient.ClientSourceID equals tbClientSource.ClientSourceID into xinde7

                                    join tbClientType in myModels.S_ClientType on tbRepairClient.ClientTypeID equals tbClientType.ClientTypeID into xinde8

                                    where tbRepairClient.RepairClientID == CarOwnerID

                                    select new

                                    {

                                        RepairClient = tbRepairClient.RepairClient,//车主

                                        Birthday = tbRepairClient.Birthday.ToString(),//生日

                                        IDNum = tbRepairClient.IDNum,//身份证号码

                                        Phone = tbRepairClient.Phone,//手机号码

                                        PlateNumber = (KECHE.PlateNumber == null) ? "N/A" : KECHE.PlateNumber,//车牌号码

                                        EngineNumber = (KECHE.EngineNumber == null) ? "N/A" : KECHE.EngineNumber,//发动机号码

                                        CarframeNumber = (KECHE.CarframeNumber == null) ? "N/A" : KECHE.CarframeNumber,//车架号码

                                        CarTypeID = (KECHE.CarTypeID == null) ? 0 : KECHE.CarTypeID,//车型ID

                                        GiveRepairMan = tbRepairClient.GiveRepairMan,//送修人

                                        GiveRepairManPhone = tbRepairClient.GiveRepairManPhone,//送修人电话

                                        InsuranceCompanyID = (KEBAO.InsuranceCompanyID == null) ? 0 : KEBAO.InsuranceCompanyID,//保险公司ID

                                        InsuranceTypeID = (KEBAO.InsuranceTypeID == null) ? 0 : KEBAO.InsuranceTypeID,//保险类型ID

                                        InsuranceBeginTime = xinde2.Select(m => m.InsuranceBeginTime).FirstOrDefault(),//保险起始日

                                        InsuranceEndTime = xinde2.Select(n => n.InsuranceEndTime).FirstOrDefault(),//保险终止日

                                        Address = tbRepairClient.Address,//地址

                                        Code = tbRepairClient.Code,//客户编号

                                        DrivingLicenceYearAuditTwo = tbRepairClient.DrivingLicenceYearAudit,//行驶证年审

                                        ClientAreaID = xinde3.Select(b => b.ClientAreaID).FirstOrDefault(),//所属区域ID

                                        DepartmentID = xinde5.Select(m => m.DepartmentID).FirstOrDefault(),//员工所属部门ID

                                        EmployeeID = xinde4.Select(m => m.EmployeeID).FirstOrDefault(),//所属员工ID

                                        ClientLevelID = xinde6.Select(m => m.ClientLevelID).FirstOrDefault(),//客户等级ID

                                        ClientSouceID = xinde7.Select(m => m.ClientSourceID).FirstOrDefault(),//客户来源ID

                                        ClientTypeID = xinde8.Select(m => m.ClientTypeID).FirstOrDefault(),//客户类别ID

                                        DrivingLicenceYearAudit = tbRepairClient.DrivingLicenceYearAudit,//驾驶证年审

                                        EnterMan = tbRepairClient.RecordMan,//录入人

                                    }).ToList();

你可能感兴趣的:(Linq左连接思路以及写法)