NHibernate Linq查询连接两个列的子查询

时间:2013-11-29 15:18:47

标签: linq tsql nhibernate

“案例”可以包含许多操作类型,每个操作都记录在日记中。 我想仅显示最新日记帐分录

的“案例”列表

这是T-SQL子查询

SELECT SagId, max(Dato) as maxdate FROM vOpgaveliste o group by SagId

这是T-SQL主查询

select o.* from
(
SELECT SagId, max(Dato) as maxdate
FROM vOpgaveliste o
group by SagId
)
as nyeste
join vOpgaveliste o on o.SagId = nyeste.SagId and o.Dato = nyeste.maxdate

我可以在linq中创建子查询

var queryInner = from o in query
                 where o.SagsbehandlerInit == "chr"
                 where o.Dato >= DateTime.Today && o.Dato <= DateTime.Today.AddDays(-7)
                 group o by o.SagId
                 into g
                 select new { SagId = g.Key, MaxDate = g.Max(d => d.Dato) };

然后我创建了这个查询

  var outer = from o in query
              from s in queryInner
              where s.SagId == o.SagId && s.MaxDate == o.Dato    
              select o;

但NHibernate抛出System.NotSupportedException未被用户代码异常处理 我也尝试了这种语法https://stackoverflow.com/a/16918106/1147577,但在连接语句中出现语法错误

由于

1 个答案:

答案 0 :(得分:0)

NHibernate 根本不支持来自语句块的子查询。它仅在Select和Where块中支持它。

我想你必须想出另一种方法来获得你的结果。

当然linq to object或许多其他linq提供程序支持所有类型的疯狂查询结构,linq到Nhibernate实现只是有很多限制。