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