1

我有这样的代码:

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

所以在组织人员和角色之间有一个桥接表。此查询正在尝试查找具有 FirstName 包含该字符串的人员的组织。

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

不能将 Person[FirstName <> NULL] 用作 Any 或 All 表达式中的逻辑表达式的一部分

我该如何检查null

4

2 回答 2

2

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

于 2012-10-26T01:03:28.590 回答
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)));
于 2012-10-26T02:22:44.363 回答