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

时间:2014-01-09 16:57:02

标签: 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();

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

eventQuery1 = eventQuery1.Union(eventQuery2);

The UnionResultOperator result operator is not current supported

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

1 个答案:

答案 0 :(得分: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))