linq语句 两表左联(多条件联合) 无数据赋值 || A表多次左联B表(含根据条件拼接linq)

这篇博客介绍了如何使用LINQ进行两表的左连接查询,特别是在没有匹配数据时的处理策略。同时,文章探讨了在A表中通过多个编码字段与B表进行多次联接的情况,包括根据条件动态拼接LINQ查询的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 linq语句 两表左联(多条件联合) 无数据赋值

var Editquery=from table in query
                              join dyTable in dyTableQuery 
                              on new {TableMC= table.MC,tableTypeName=table.TABLE_NAME }  equals new { TableMC = dyTable.BMMC, tableTypeName = dyTable.BM_TABLENAME }
                              into newQuery
                              from A in newQuery.DefaultIfEmpty()
                              select new Model.CorrespondingTableInfo
                              {
                                  BM= table.BM,
                                  MC = table.MC,
                                  TABLE_NAME=table.TABLE_NAME,
                                  IsHaveDY = A != null ? true : false
                              };


                return Editquery.ToList();

--------------------A表多次左联B表(含根据条件拼接linq),因为A表里有3个列存编码要去B表查名称-------------------------------------------

var query = from s in Employees
                        join departpent in Departments on s.FunctionDepartment equals departpent.Code into FunctionName
                        from FName in FunctionName.DefaultIfEmpty()
                        join departpent2 in Departments on s.OutpatientDepartment equals departpent2.Code into OutName
                        from OName in OutName.DefaultIfEmpty()
                        join departpent3 in Departments on s.InpatientDepartment equals departpent3.Code into InName
                        from IName in InName.DefaultIfEmpty()
                        select new Model.EmployeeInfo
                        {
                            OutpatientDepartment = s.OutpatientDepartment.TrimEnd(),
                            InpatientDepartment = s.InpatientDepartment.TrimEnd(),
                            FunctionDepartment = s.FunctionDepartment.TrimEnd(),
                            FunctionDepartmentName = FName.Name ?? "",
                            OutpatientDepartmentName = OName.Name ?? "",
                            InpatientDepartmentName = IName.Name ?? "",
                            EmpNo = s.EmpNo.TrimEnd(),
                            Name = s.Name.TrimEnd(),
                        };
            if (!string.IsNullOrEmpty(EmpNoOrName))
            {
                query = query.Where(s => s.EmpNo.Contains(EmpNoOrName) || s.Name.Contains(EmpNoOrName));
            }
            else if (!string.IsNullOrEmpty(strDepartmentCode))
            {
                query = query.Where(s=>s.InpatientDepartment== strDepartmentCode||s.FunctionDepartment== strDepartmentCode||s.OutpatientDepartment== strDepartmentCode);
            }
            return query.ToList();

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值