在NHibernate QueryOver SelectGroup中截断DateTime

Joh*_*ohn 6 nhibernate datetime truncate group-by queryover

我有一个相当普遍的QueryOver查询,包含以下内容,

.SelectList(list => list
    .SelectGroup(() => txn.GroupField)
    .SelectGroup(() => txn.Date))
.List<object[]>()
Run Code Online (Sandbox Code Playgroud)

此查询按预期工作,但我现在需要按截断日期进行分组,因为这些对象的某些日期可能包含时间组件.这似乎应该是一个微不足道的变化,但我找不到NHibernate支持的方式.

显而易见的解决方案是下面的更改,但不支持.

.SelectGroup(() => txn.Date.Date))
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

谢谢

Mon*_*der 6

QueryOver可能看起来像这样:

Status alias = null;
var query = QueryOver.Of(() => alias)
    .Select(Projections.GroupProperty(
        Projections.SqlFunction("date", NHibernateUtil.Date, Projections.Property(() => alias.Date))));
Run Code Online (Sandbox Code Playgroud)

输出(伪sql):

SELECT 
           ...
FROM       [Status] this_
GROUP BY   dateadd(dd, 0, datediff(dd, 0, this_.Date))
Run Code Online (Sandbox Code Playgroud)

希望这有帮助,干杯!