C# 正在检查lambda表达式-linq中的null

C# 正在检查lambda表达式-linq中的null,c#,asp.net-mvc,linq,jquery-datatables,C#,Asp.net Mvc,Linq,Jquery Datatables,我正在尝试为高级搜索编写表达式。但是,我需要检查每个属性是否为null,否则将抛出错误 我已经包含了下面没有空检查的表达式 使用jQuery数据表输出结果 filteredPeople = unitOfWork.PeopleRepository.Get().Where(c => IdSearchable && c.personID.ToString().Contains(param.sSearch.ToLower()) || surnameSearchable

我正在尝试为高级搜索编写表达式。但是,我需要检查每个属性是否为
null
,否则将抛出错误

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

使用jQuery数据表输出结果

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()))
                   ||
                     ....


条件AND运算符(&&)对其bool操作数执行逻辑AND运算,但仅在必要时计算其第二个操作数。

请尝试以下操作:,基本上,我将所有的条件检查都封装在括号中,以进一步提高可读性,并确保编译器对庞大逻辑的解释不会产生任何奇怪的结果


那么,您尝试检查空值是什么?(考虑到&&和| | |的组合,我将开始显式地将它们括起来……)您想检查哪些属性,如果它们为null,您会怎么做?请注意,
c.lasname
etc可能是由ORM通过SQL处理的,因此实际上没有在c#code中进行测试。还是这些都是LINQ to Objects?@jc99观察:既然你是来寻求帮助的,那么回答关于提供正确信息的必要背景的问题会对你有利。我个人认为这个PeopleRepository.Get()应该使用某种ORM工具,在这种情况下,它实际上不会作为.NET执行;我想知道这是否只是一个测试模拟的问题
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())));