EF条件查询无法与任何可用信息匹配

时间:2018-07-20 23:48:01

标签: entity-framework

我正在尝试使用Linq to Entity通过对象中可用的3个属性中的任何一个来编写查询来搜索员工。

我的对象具有名字,姓氏和出生日期。

我的查询如下(搜索是包含部分或全部信息的对象)

var results = ctx
    .emp
    .Where(p => 
            p.Fname == (search.Firstname ?? p.Fname)
            && p.Lname == (search.Lastname ?? p.Lname)
            && p.Dob == (search.Dob ?? p.Dob ))

问题是上述查询正在匹配3列中每列中具有空值的员工以及匹配的值。例如,如果我提供search.FirstnameJohn,则它将匹配每个名字为John的人和每个名字为null的人。

如何在提供值的字段中不匹配空值?

1 个答案:

答案 0 :(得分:1)

还没有测试,但是不会做类似的工作。

var results = ctx .emp .Where(p => (search.Firstname == null ? p.Fname == p.Fname : p.Fname == search.Firstname) || (search.Lastname == null ? p.Lname == p.Lname : p.Lname == search.Lastname) || (search.Dob == null ? p.Dob == p.Dob : p.Dob == search.Dob))

请原谅格式。使用我的手机:)