C# EF Deep Lambda 非重复计数查询

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

最佳答案

使用 SelectMany 而不是 Select

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

关于C# EF Deep Lambda 非重复计数查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14228980/

相关文章:

c# - 无法单击 jquery 对话框中的 asp.net 按钮

c# - 将 Task<decimal> 转换为 decimal

c# - LINQ 到 SQL : On load processing of lazy loaded associations

c# - 使用Graph API获取用户信息

asp.net GridView IF 空显示消息

c# - 需要帮助在 asp.net 中为菜单项创建下拉菜单

c# - 在哪里放置业务实体、枚举、自定义异常?

c# - 通用存储库模式软删除

c# - 如何使用 .net admin sdk 添加指向 firebase 云消息传递的链接

c# - 具有泛型类型的 nameof