c# - 使用 Max 的 NHibernate QueryOver 子集合

标签 c# nhibernate queryover

我有课

public class BlogPost
{
    public int Id {get;set;}
    public string Body{get;set;}
    public IList<Comment> Comments{get;set;}
    //other properties
}

public class Comment
{
    public int Id {get;set;}
    public int TypeId {get;set;}
    public int BlogPostId {get;set;}
    public DateTime DateAdd {get;set;}
    public string Body {get;set;}
    //other properties
}

所以我们有一些 BlogPost 集合,其中每个 BlogPost 可以有很多评论。

我想收集所有 BlogPosts,其中最后一条评论(这与 MAX(DateAdde) 是 TypeId=1 或 TypeId=2。提前致谢。

最佳答案

我已尽力将您的类结构转换为查询,我正在按照相同的思路做一些事情。我的是在一位 parent 之后,他们的标准有一个 child ,其中最新的 child 有特殊标准。我删除了父标准并应用了您的类结构,因此它应该接近,但未经测试。

var query = session.QueryOver<BlogPost>(); //get queryover however you implemented
BlogPost bp = null;
Comment c = null;

var q = QueryOver.Of<BlogPost>(() => bp)
    .JoinAlias(() => bp.Comments, () => c)
    .SelectList(list => list.SelectMax(() => c.DateAdd));

query.JoinQueryOver<Comment>(x => x.Comments)
    .WithSubquery
    .WhereProperty(x => x.DateAdd).Eq(q)
    .Where(x => x.TypeId == 1 || x.TypeId == 2);

     query.List...

关于c# - 使用 Max 的 NHibernate QueryOver 子集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6004923/

相关文章:

c# - 使用 Visual Studio 2019 将 FileSystemWatcher 作为 Windows 服务

c# - 如何在嵌套查询中使用 DefaultIfEmpty

c# - 检查 StreamReader 是否可以读取另一行

nhibernate - 如何在 HQL 中使用 ROW_NUMBER()?

c# - Select N+1的NHibernate QueryOver解决方案

c# - NHibernate QueryOver : How to join unrelated entities?

c# - 使用 AesCryptoServiceProvider 获取不正确的解密值

nhibernate - 使用 CaSTLe.Facilities.AutoTx 运行 NHibernate 时出现 MissingTransactionException

c# - 使用 NHibernate 将行插入数据库表而不在插入行后调用 scope_identity

nhibernate - 与 NHibernate ICriteria/QueryOver 查询的外连接中的条件相等