1
爲什麼會產生以下工作:的LINQ to NHibernate的查詢問題
var profiles = (eventId > 0)
? Profiles.Query().Where(p => p.Event.Id == eventId).ToList()
: Profiles.Query().Where(p => p.Event == null).ToList();
當出現以下不會:
var profiles = (from p in Profiles.Query()
where (eventId > 0)
? p.Event.Id == eventId
: p.Event == null
select p).ToList()
前者返回1個行時事件ID爲-1,但後者返回0行。我運行了SQL Profiler,發現NHibernate生成的where子句看起來像這樣:
WHERE 1 = 0 AND (...)
但我不明白爲什麼? Linq對NHibernate在where子句中評估三元表達式有困難嗎?一般來說,這是Linq的問題嗎?