NHibernate通过单个查询获得每个类别一个元素

时间:2012-03-29 12:39:44

标签: c# sql nhibernate

我有新闻类如下:

    public class News
    {
        public virtual int Id { set; get; }
        public virtual string Title { get; set; }
        public virtual Category Category { set; get; }
        public virtual DateTime DateCreated { set; get;} 
    }

并且有类别类;

public class Category
{
    public virtual int Id { set; get; }
    public virtual string Name { set; get;}
}

新闻表中填充了数据。

我需要的是按DateCreated订购每个类别一个新闻。好的所以我想要该类别的最新消息,但我想要所有类别的所有新闻。

好的我可以获得所有类别并获得每个类别的最新消息,我很好奇是否有一种有效的方法可以做到这一点?

任何想法?

什么是正确的语法?

1 个答案:

答案 0 :(得分:1)

在我看来,最干净的方法是在Category类中添加一个反向集合(这在技术上是免费的,如果你需要绘图方面的帮助,请告诉我):

public virtual ICollection<News> NewsItems { get; set; }

然后它是一个简单的LINQ查询:

var results = from category in session.Query<Category>()
              select new
                     {
                         category,
                         LatestNews = category.NewsItems
                           OrderByDescending(x => x.DateCreated).FirstOrDefault()
                     };