我正在尝试使用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.Firstname
为John
,则它将匹配每个名字为John
的人和每个名字为null
的人。
如何在提供值的字段中不匹配空值?
答案 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))
请原谅格式。使用我的手机:)