“案例”可以包含许多操作类型,每个操作都记录在日记中。 我想仅显示最新日记帐分录
的“案例”列表这是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,但在连接语句中出现语法错误
由于
答案 0 :(得分:0)
NHibernate 根本不支持来自语句块的子查询。它仅在Select和Where块中支持它。
我想你必须想出另一种方法来获得你的结果。
当然linq to object或许多其他linq提供程序支持所有类型的疯狂查询结构,linq到Nhibernate实现只是有很多限制。