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的问题吗?