6

以下の linq ステートメントを実行すると、重複したブログ投稿が戻ってくるという問題があります。

ブログ投稿に同じタグを複数回付けることができ、それが問題の原因となっている問題。基準を使用すると、次のことができることを知っていますcriteria.SetResultTransformer(new DistinctRootEntityResultTransformer());

linqで同じことを行うにはどうすればよいですか?

List<BlogPost> result = (from blogPost in _session.Linq<BlogPost>()
                         from tags in blogPost.Tags
                         where tags.Tag == tag && blogPost.IsPublished 
                            && blogPost.Slug != slugToExclude
                         orderby blogPost.DateCreated descending
                         select blogPost).Distinct()
                        .Skip(recordsToSkip).Take(pageSize).ToList();
4

1 に答える 1

2

試す

List<BlogPost> result = (from blogPost in _session.Linq<BlogPost>()
                         where blogPost.Tags.Any(t => t == tag) 
                            && blogPost.IsPublished 
                            && blogPost.Slug != slugToExclude
                         orderby blogPost.DateCreated descending
                         select blogPost).Distinct()
                        .Skip(recordsToSkip).Take(pageSize).ToList();

いずれにしても、古い NHibernate LINQ プロバイダーは維持されません。NHibernate 3.0 に組み込まれている新しいものを試してください (使用するsession.Query()には、session.Linq().

于 2011-02-22T01:36:57.767 に答える