检查空值时在Linq中搜索错误

时间:2012-10-26 01:00:14

标签: c# linq exception-handling

我有这样的代码:

var organisations = Uow.Query<Organisation>()
                       .Where(x => x.PersonOrganisationRoles.Any(por =>
                           por.Person.FirstName != null &&
                           por.Person.FirstName.ToLower().Contains(searchFragmentLower)));

因此,组织人员和角色之间存在桥接表。此查询尝试查找具有包含字符串的FirstName的人的组织。

问题是,当我运行它时,我得到:

  

不能使用Person [FirstName&lt;&gt; NULL]作为Any或All表达式

中逻辑表达式的一部分

如何查看null

2 个答案:

答案 0 :(得分:2)

你试过por => !string.IsNullOrEmpty(por.Person.FirstName)吗?

答案 1 :(得分:0)

看起来有些东西抱怨Linq正在生成的SQL

尝试在运行any

之前将null检查移动到where子句中
var organisations = Uow.Query<Organisation>().
Where(x => x.PersonOrganisationRoles.Where(por => por != null && por.Person != null && por.Person.FirstName != null).Any(por => phr.Person.FirstName.ToLower().Contains(searchFragmentLower)));