[英]Linq to NHibernate query issue
為什么會這樣工作:
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事件探查器,發現NHibernate正在生成一個where子句,如下所示:
WHERE 1 = 0 AND (...)
但我不明白為什么? Linq to NHibernate在where子句中評估三元表達式是否有困難? 一般來說,Linq是否有問題?
似乎只是在NHibernate的Linq中。 如果將此查詢與Linq一起應用於對象,則效果很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.