2010-09-13 111 views
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的問題嗎?

回答

0

它似乎只是在Linq到NHibernate。如果你將這個查詢與Linq應用到對象,它工作正常。