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