加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在lambda表达式中检查null – linq

发布时间:2020-12-16 01:53:39 所属栏目:百科 来源:网络整理
导读:我正在尝试为高级搜索编写表达式.但是,我需要检查每个属性是否为null,否则将引发错误. 我已经包含了没有下面的空检查的表达式. 结果是使用jQuery dataTables输出. filteredPeople = unitOfWork.PeopleRepository.Get().Where(c = IdSearchable c.personID.To
我正在尝试为高级搜索编写表达式.但是,我需要检查每个属性是否为null,否则将引发错误.

我已经包含了没有下面的空检查的表达式.

结果是使用jQuery dataTables输出.

filteredPeople = unitOfWork.PeopleRepository.Get().Where(c =>
   IdSearchable && c.personID.ToString().Contains(param.sSearch.ToLower())
   || surnameSearchable && c.Surname.ToLower().Contains(param.sSearch.ToLower())
   || firstNameSearchable && c.FirstName.ToLower().Contains(param.sSearch.ToLower())
   || genderSearchable && c.Gender.ToLower().Contains(param.sSearch.ToLower())
));

解决方法

尝试下面,我基本上将所有你的个别条件检查包含在括号内,以进一步提高可读性,并确保你不会因编译器对这个巨大逻辑的解释而得到任何奇怪的结果.

filteredPeople = unitOfWork.PeopleRepository.Get()
                .Where(c => (IdSearchable
                        && c.personID != null
                        && c.personID.ToString().Contains(param.sSearch.ToLower()))
                    || (surnameSearchable 
                        && c.Surname != null
                        && c.Surname.ToLower().Contains(param.sSearch.ToLower()))
                    || (firstNameSearchable 
                        && c.FirstName != null
                        && c.FirstName.ToLower().Contains(param.sSearch.ToLower()))
                    || (genderSearchable 
                        && c.Gender != null
                        && c.Gender.ToLower().Contains(param.sSearch.ToLower())));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读