2010-03-11 44 views
6

Tôi đang gặp sự cố với bài đăng trên blog trùng lặp quay lại khi tôi chạy câu lệnh LINQ bên dưới.NHibernate Linq - Bản ghi trùng lặp

Vấn đề mà bài đăng trên blog có thể có cùng một thẻ nhiều hơn một lần và điều đó gây ra sự cố. Tôi biết khi bạn sử dụng tiêu chí bạn có thể làm các tiêu chí sau đây.SetResultTransformer (mới DistinctRootEntityResultTransformer());

Tôi có thể làm điều tương tự với LINQ như thế nào?

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(); 
+0

Hm ... Vấn đề là NH không dịch. Biểu hiện() biểu hiện đúng? Trông giống như một lỗi trong phiên dịch –

+0

Nó không phải là một lỗi vì DateCreated sẽ là duy nhất cho mỗi hàng? Tôi đề nghị bạn sử dụng một tương đương với MAX (DateCreated) nếu không bạn có thể cần phải phân vùng hoặc refactor theo một số cách khác để thực hiện một bộ lọc chính. – CarneyCode

Trả lời

2

thử

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(); 

Các nhà cung cấp cũ NHibernate LINQ không được duy trì anyway. Hãy thử một mới được xây dựng trong NHibernate 3.0 (để sử dụng nó bạn gõ session.Query() thay vì session.Linq().

Các vấn đề liên quan