6

当我运行下面的 linq 语句时,我遇到了重复的博客文章返回的问题。

博客文章可以多次使用相同标签的问题,这就是导致问题的原因。我知道当您使用标准时,您可以执行以下标准。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 回答