c#lambda表达式如果条件在where里面

Kur*_*ula 3 c# lambda

我有一个场景,我使用lambda表达式按名称,地址和电话号码过滤数据.但是当一个属性没有值时,我的过滤器会考虑属性为null的位置,并给出错误的结果.如果属性为null,是否有任何选项可以使用if条件从三种情况中删除where条件.我的意思是有任何情况下添加where/check仅用于具有值的属性的对象吗?

var filterCriteria ={
name: "abc",
address:"",
phone:""
}

var Details = _context.LogEntities
                    .Where(p => p.name == (filterCriteria.name))
                    .Where(p => p.address== (filterCriteria.address))
                    .Where(p => p.phone== (filterCriteria.phone))

                return Json(Details);
Run Code Online (Sandbox Code Playgroud)

Ale*_*ese 5

如果您仍希望在名称,地址或电话为空时返回记录,则只需在条件中检查是否为空.

var Details = _context.LogEntities
                    .Where(p => p.name == null || p.name == (filterCriteria.name))
                    .Where(p => p.address == null || p.address == (filterCriteria.address))
                    .Where(p => p.phone == null || p.phone == (filterCriteria.phone))

                return Json(Details);
Run Code Online (Sandbox Code Playgroud)