为什么以下工作:
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()
当eventId为-1时,前者返回1行,但后者返回0行。我运行了一个SQL Profiler,发现NHibernate正在生成一个看似如下的where子句:
WHERE 1 = 0 AND (...)
但我不明白为什么? Linq对NHibernate在where子句中评估三元表达式有困难吗?这一般是Linq的问题吗?
答案 0 :(得分:0)
似乎只是在Linq中对NHibernate。如果将此查询与Linq应用于对象,则可以正常工作。