2014-01-09 66 views
6

如何將LINQ中的兩個查詢聯合爲流利NHibernate?如何將LINQ中的兩個查詢聯合爲流利NHibernate?

他們返還相同種類,但查詢是在獨立的實體:

IQueryable<Event> eventQuery1 = session.Query<Event>().Where(e => e.EventType.Id == eventTypeId); 

IQueryable<Event> eventQuery2 = session.Query<Nomination>().Select(n => n.Event).Distinct(); 

我試過聯盟()和CONCAT()方法,但他們失敗了:

eventQuery1 = eventQuery1.Union(eventQuery2); 

The UnionResultOperator result operator is not current supported 

我不想要從數據庫加載對象,然後應用concat,我希望在從數據庫返回對象之前完成它,以便我可以在聯合的最終列表上應用一些Fetches。

+0

希望[這](http://msdn.microsoft.com/en-us/library/bb156049%28v = vs.110%29.aspx)例子有所幫助。 – user2989408

+0

我說我嘗試過Union()和Contact()方法。他們不支持NHibernate。 –

+1

[NHibernate標準的SQL聯盟]的可能重複(http://stackoverflow.com/questions/18623146/sql-union-to-nhibernate-criteria) – Najera

回答

0

不知道這是否與NHibernate LINQ的作品,而是一個解決辦法是:

IQueryable<Event> eventQuery = 
    session.Query<Event>() 
      .Where(e => e.EventType.Id == eventTypeId 
        || session.Query<Nomination>() 
           .Select(n => n.Event.Id) 
           .Contains(e.Id))