【问题标题】:NHibernate Criteria query to select the most recent item per typeNHibernate Criteria 查询以选择每种类型的最新项目
【发布时间】:2011-09-01 18:47:11
【问题描述】:

我需要使用 NHibernate 标准查询查找员工提交的最新报告。我确定我需要使用投影,但我不知道如何设置它。

我的领域模型的解释:

public class Employee
{
  public int Id {get; set;}
  public string Name {get; set;}
}

public class Report 
{
  public int Id {get; set;}
  public DateTime? Submitted {get; set;}
  public Employee Employee {get; set;}
  // Other report properties omitted
}

如果有 5 名员工,每人有 7 份报告,则查询应返回 5 份报告,每位员工一份,其中 Submitted 属性不为空,并且是该员工最近的一份.

【问题讨论】:

    标签: c# nhibernate criteria


    【解决方案1】:

    对此我不太确定,但请查看:

    var rst = session.CreateCriteria<Report>()
                    .SetProjection(Projections.GroupProperty("Employee"))
                    .SetProjection(Projections.Max("Submitted"))
                    .Add(NHibernate.Criterion.Expression.IsNotNull("Submitted")).List();
    

    【讨论】:

    • 也许你不确定,但我是——我在我的项目中使用了基本完全相同的查询,而且效果很好。
    • 感谢您的回答。这基本上返回一个项目,它是一个 DateTime 对象。
    猜你喜欢
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2011-01-13
    相关资源
    最近更新 更多