You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Asp.Net .NET5 中使用EF 5 LINQ Lambda查询特定角色的用户数量

解决方案

你只需要补充一个Any条件筛选拥有Basic角色的用户即可,完整代码如下:

public int GetNumberOfActiveBasicUsers()
{
    var users = _context.Users
        .Where(u => u.IsEnabled == true)
        .Where(u => u.UserName != "AdminUser")
        // 新增筛选逻辑:判断用户关联的角色中存在名称为Basic的角色
        .Where(u => u.UserRoles.Any(ur => ur.Role.Name == "Basic"))
        .Count();  
     return users;
 }

补充说明

  • 你原来写的Include和ThenInclude可以直接删掉,对于这种聚合查询场景,EF 会自动生成多表关联的SQL语句,不需要显式加载导航属性,删掉后执行效率更高。
  • 如果你想进一步优化查询性能,避免字符串匹配的开销,也可以先查Basic角色的Id再做筛选:
public int GetNumberOfActiveBasicUsers()
{
    // 先获取Basic角色的Id
    var basicRoleId = _context.Roles.First(r => r.Name == "Basic").Id;
    var users = _context.Users
        .Where(u => u.IsEnabled == true)
        .Where(u => u.UserName != "AdminUser")
        .Where(u => u.UserRoles.Any(ur => ur.RoleId == basicRoleId))
        .Count();  
     return users;
 }

两种写法都能匹配你的示例数据,返回预期结果2。

内容的提问来源于stack exchange,提问作者GolfBravo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:06:08