1

私はこのようなコードを持っています:

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

そのため、Organization Person と Role の間にブリッジ テーブルがあります。このクエリは、文字列を含む FirstName を持つ人がいる組織を見つけようとしています。

問題は、実行すると次のようになることです。

Any または All 式の論理式の一部として Person[FirstName <> NULL] を使用することはできません

どうすれば確認でき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 に答える