2011-06-27 40 views
1

在我使用NHibernate的.Net項目中,我有一段代碼根據用戶在過濾器中設置的值構建表達式樹列表UI。 該表達式是針對我的域模型的特定對象構建的,比方說客戶。 當我想爲Customes,一切都很好,就像在下面的例子中的屬性創建一個過濾條件:LINQ到嵌套關係條件的NHibernate表達式

Expression<Func<Model.Customer, bool>> expr = c => 
        c.Name == "My Company"; 

但現在,我需要創建一個讓我過濾車的客戶基礎上,涉及的條件表達式一對多關係......讓我們說訂單。客戶可以有很多訂單,所以這種關係是一對多的關係。我需要建立,我可以適用於客戶查詢表達式,以exptract僅至少有一個順序放在2010.I'd寫像這樣的客戶:

Expression<Func<Model.Cusotmer, bool>> expr = c =>       
        c.Orders.Where(o => o.year == 2010).Count() > 0; 

太糟糕了,這將無法工作。看來NHibernate不能解析這個表達式。 關於如何編寫一個實現該搜索條件並可由Linq 2 NHibernate進行分析的表達式樹的想法?

回答

3

因爲你用Count() > 0你可以使用任何代替:

Expression<Func<Model.Cusotmer, bool>> expr = c =>       
        c.Orders.Any(o => o.year == 2010);