2013-01-09 3 views
4

이것은 내가하려고하는 쿼리입니다.C# EF 딥 람다 고유 카운트 쿼리

var commentActivity = project.ProjectDoc 
     .Select(c => c.Comment.Select(i => i.UserID)) 
     .Distinct() 
     .Count(); 

내가 원하는 것은 특정 프로젝트의 별개 사용자의 의견 수이지만 모든 ProjectDoc입니다. 이 쿼리는 "작동"결과가 잘못되었습니다. 이 모델은 일반적으로 스케치 된 것과 같습니다.

Project 
     ProjectDoc 
      Comment 

업데이트 : 나는 그래서 비록 내가 참고로이를 게시 할 것입니다 작동하지 않았다 몇 가지를 시도보다 한 단계 더 깊은 대답을 기반으로 가야했다. 두 개의 SelectMany 메서드에 유의하십시오.

var replyActivity = project.ProjectDoc 
     .SelectMany(c => c.Comment.SelectMany(r => r.CommentReply.Select(u => u.UserID))) 
     .Distinct() 
     .Count(); 

답변

5

는 사용 SelectMany 대신 선택

project.ProjectDoc 
     .SelectMany(c => c.Comment.Select(i => i.UserID)) 
     .Distinct() 
     .Count() 
+0

바이올린으로 몇 시간을 보낸 후 2 분 전에 같은 일이 생겼습니다 ... 의도적으로 일어난 것이 아니라 단지 행복한 사고였습니다. 고맙습니다!!! –

0
var data = (from con in project.ProjectDoc 
       select new 
       { 
       CommentCount=project.Comment.Count(x=>x.UserID==con.UserID) 

       }).ToList(); 

은 내가 당신을 도울 것이라 생각합니다.