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

使用C# Graph API SDK筛选特定扩展属性用户遇阻求替代方案

解决C# Graph API SDK筛选含非空扩展属性用户的问题

原代码中直接使用extension_{appID}_{attribute} ne null的Filter语句不被Graph API支持,核心原因是服务端对扩展属性的null判断存在语法限制。以下是几种可行的替代方案:

  • 针对字符串类型扩展属性的服务端过滤
    如果你的扩展属性是字符串类型,可以将过滤条件改为判断属性不等于空字符串,以此筛选出属性存在且值不为空的用户:

    graphServiceClient.Users.Request()
        .Filter("extension_{appID}_{attribute} ne ''")
        .GetAsync();
    
  • 客户端二次过滤
    若服务端过滤无法满足需求,可先拉取用户数据(建议通过$select指定仅需字段提升效率),再在客户端筛选出包含目标扩展属性且值不为空的用户:

    var allUsers = await graphServiceClient.Users.Request()
        .Select("id,displayName,extension_{appID}_{attribute}")
        .GetAsync();
    
    var filteredUsers = allUsers.Where(u => 
        u.AdditionalData.TryGetValue("extension_{appID}_{attribute}", out var value) 
        && value != null 
        && !string.IsNullOrWhiteSpace(value.ToString())).ToList();
    
  • Azure AD Premium许可下的高级过滤
    如果你拥有Azure AD Premium许可,可以使用has()函数先判断扩展属性是否存在,再结合非空判断:

    graphServiceClient.Users.Request()
        .Filter("has(extension_{appID}_{attribute}) and extension_{appID}_{attribute} ne null")
        .GetAsync();
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 20:02:07