【发布时间】:2013-12-15 19:59:13
【问题描述】:
一个“案例”可以有多种操作类型,每个操作都记录在日志中。 我只想显示最新日记条目的“案例”列表
这是 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,但在连接语句上出现语法错误
谢谢
【问题讨论】:
-
这可能是 LINQ-to-NHibernate 根本不支持的情况...
-
queryInner 本身性能好吗?我想这是愚蠢的想法,但我想知道是否支持
DateTime.Today.AddDays(-7)。 -
是的,内部查询工作正常
-
看看这个答案,它解决了一个与你非常相似的案例:stackoverflow.com/a/14633967/3057341
标签: linq tsql nhibernate