Linq Left Join with Where子句

时间:2014-01-22 10:05:04

标签: c# mysql linq entity-framework-5

我有这个查询,我正在使用带有MySql的实体框架5执行。

var employeeDetails = (from em in entities.employeemasters.AsEnumerable()
                       join sf in entities.salaryfitments.AsEnumerable()
                       on em.empID equals sf.empID into emsf
                       from x in emsf
                       where (x.edCode.ToString().Trim().Equals(txtEDCode.Text)
                       && x.edCode != "SYS001")
                       select new { em, x });  

where (x.edCode.ToString().Trim().Equals(txtEDCode.Text)检查是否有为该员工存储的任何收入/扣除额,如果是,我可以获得金额数字。

我希望查询返回所有员工,如果他们没有与txtEDCode.Text匹配的特定收入/扣除额,则返回默认值。

我无法在.DefaultIfEmpty()

之后放置where (x.edCode.ToString().Trim().Equals(txtEDCode.Text)

我该怎么做才能获得适当的结果?

1 个答案:

答案 0 :(得分:1)

不是返回整个实体,而是创建一个只包含我感兴趣的字段的新对象,并使用ternary if在select语句中提供默认值,例如。

select new { 
    name = x.Name, 
    salary = x.Salary, 
    code = string.IsNullOrEmpty(x) ? "Blah" : x 
}