2010-09-13 70 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应用到对象,它工作正常。