Nhibernate分组依据-为每个外键选择最新行

佐拉

我在使用NHibernate和一个简单的GROUP BY表达式时遇到困难。

我有一张记录用户活动记录的表。我需要为每个用户返回最新的活动行,并按时间降序排序,该行还对应于降序ID(自动递增)。

基本上,这是我要运行的SQL:

SELECT * FROM log_user_activity GROUP BY UserID DESC

我在SO中搜索了类似的问题,并获得了一系列有关投影,子查询,DTO的答案。

是否有任何简单的方法可以完成,而无需定义新的DTO类,或使用带有匿名对象的投影,而我必须再次手动指定所有列?使用QueryOver语法的解决方案会更好,但不是强制性的。

拉迪姆·科勒

是否有任何简单的方法可以完成,而无需定义新的DTO类,或使用带有匿名对象的投影,而我必须再次手动指定所有列?

不,没有其他方法,然后:

  1. 按原样选择映射对象
  2. 选择一个投影-可以但不必将其转换为原始或DTO对象(我们可以随时返回.List<object[]>()...)

但是我们可以做的是从16.8中获利子查询和返回只是映射对象的列表,它们是,这些与最大滤波Time特性:

ActivityLog activity = null;

// subquery to be later used for EXISTS
var maxSubquery = QueryOver.Of<ActivityLog>()
    .SelectList(l => l
        .SelectGroup(item => item.UserID)
        .SelectMax(item => item.Time)
    )
    // WHERE Clause
    .Where(x => x.UserID == activity.UserID )
    // HAVING Clause
    .Where(Restrictions.EqProperty(
        Projections.Max<ActivityLog>(item => item.Time),
        Projections.Property(() => activity.Time)
    ));

// final query without any transformations/projections... but filtered
var result = session.QueryOver<ActivityLog>(() => activity)
    .WithSubquery
    .WhereExists(maxSubquery)
    .List<ActivityLog>()
    ;

还要检查以下内容:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Nhibernate分组依据-为每个外键选择最新行

来自分类Dev

linq选择分组依据

来自分类Dev

在分组依据的键内排序

来自分类Dev

sql oracle选择分组依据

来自分类Dev

LINQ选择和分组依据

来自分类Dev

SQL使用选择与分组依据

来自分类Dev

实体框架选择分组依据

来自分类Dev

分组依据是否为空?

来自分类Dev

MySQL分组依据为空

来自分类Dev

行由于分组依据而倍增

来自分类Dev

MySQL限制行/分组依据

来自分类Dev

Django获取每个组的最新信息,按外键分组

来自分类Dev

MySQL - 除空值外的分组依据

来自分类Dev

Python:选择最常用的分组依据

来自分类Dev

使用分组依据进行选择查询

来自分类Dev

QueryBuilder / Doctrine选择加入分组依据

来自分类Dev

在嵌套查询中选择使用分组依据

来自分类Dev

根据“选择计数(*)分组依据”填充列

来自分类Dev

Python:选择使用频率最高的分组依据

来自分类Dev

分组依据,但选择准确的记录(如果存在)

来自分类Dev

SQL分组依据,计数为零

来自分类Dev

如何根据分组依据删除某些行?

来自分类Dev

选择在特定列上带有“分组依据”的语句,但显示其他列以及分组依据

来自分类Dev

选择最大,分组依据并显示不在分组依据子句中的其他列

来自分类Dev

选择在特定列上带有“分组依据”的语句,但显示其他列以及分组依据

来自分类Dev

根据分组依据中的最大列选择行

来自分类Dev

MySQL:按日期和分组依据选择行顺序

来自分类Dev

选择具有最大字段/列值的实例/行(每个字段/列)(分组依据)

来自分类Dev

是否可以在LINQ中进行分组依据,但仅返回“最新”项(每个分组)?

Related 相关文章

热门标签

归档