C#EF Deep Lambda Distinct Count Query

时间:2013-01-09 05:47:00

标签: c# asp.net entity-framework lambda

这是我要做的查询。

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

2 个答案:

答案 0 :(得分:5)

使用SelectMany而不是Select

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

答案 1 :(得分:0)

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

              }).ToList();

我认为这会对你有帮助。