如何在LINQ中将两个查询联合到流畅的NHibernate?

The*_*ght 7 sql linq nhibernate union fluent

如何在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();
Run Code Online (Sandbox Code Playgroud)

我尝试了Union()和Concat()方法但是它们失败了:

eventQuery1 = eventQuery1.Union(eventQuery2);

The UnionResultOperator result operator is not current supported
Run Code Online (Sandbox Code Playgroud)

我不想从数据库加载对象然后应用concat,我希望在从数据库返回对象之前完成它,以便我可以在union的最终列表中应用一些Fetches.

Ger*_*old 1

不确定它是否适用于 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))
Run Code Online (Sandbox Code Playgroud)