2012-10-26 29 views
1

檢查時,我有這樣的代碼:搜索Linq中的誤差零點

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

所以有人稱組織和角色之間的橋接表。此查詢試圖查找具有包含該字符串的FirstName的人的組織。

問題是,當我運行它,我得到:

無法使用人[姓<> NULL]作爲在任一或所有表達的邏輯表達式的一部分

我怎樣才能檢查null

+1

之前的SQL,則'phr'假設是'在por' 'phr.Person.FirstName.ToLower()。 包含(searchFragmentLower)' – Mayank

回答

2

你試過por => !string.IsNullOrEmpty(por.Person.FirstName)

+0

是的,嘗試過沒有工作 – user1745482

+0

你有沒有得到相同的錯誤? – Mayank

0

看起來像是在抱怨說LINQ的是產生

嘗試移動空校驗爲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)));