我有课程
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.感谢提前。
答案 0 :(得分:4)
我尽力将您的类结构转换为我在同一行上做某事的查询。我的父母是父母,其标准是有一个孩子,其中最新的孩子有特殊标准。我删除了父标准并应用了您的类结构,因此它应该是关闭的,但是未经测试。
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...
答案 1 :(得分:1)
您是否正在使用LINQ和NHibernate?这样的事情怎么样?
blogPosts.Where(x => x.Comments.Last().TypeId == 1 || x.Comments.Last().TypeId == 2);
我不确定Nhibernate是否支持嵌套查询(许多ORM不支持),但是你可能想尝试这个。