4

授業があります

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 のコレクションがあります。

最後のコメント (MAX(DateAdde) を使用した場合は TypeId=1 または TypeId=2 を使用したすべてのブログ投稿のコレクションを取得したいと思います。よろしくお願いします。

4

2 に答える 2

4

私はあなたのクラス構造を同じ行に沿って何かをしているクエリに転置するために最善を尽くしました。私は、最新の子供が特別な基準を持っている子供を持つ基準を持つ1人の親の後でした。親基準を削除してクラス構造を適用したので、近いはずですが、テストされていません。

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...
于 2011-06-06T15:28:20.797 に答える
1

NHibernateでLINQを使用していますか?このようなものはどうですか?

blogPosts.Where(x => x.Comments.Last().TypeId == 1 || x.Comments.Last().TypeId == 2);

Nhibernateがネストされたクエリをサポートしているかどうかはわかりませんが(多くのORMはサポートしていません)、これを試してみることをお勧めします。

于 2011-05-15T09:55:14.213 に答える