簡體   English   中英

Linq to NHibernate查詢問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM