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

如何在MS Graph API及C# SDK中实现NOT STARTSWITH过滤

嘿,这个问题我之前也碰到过!Graph API在处理「非前缀匹配」的过滤时,确实容易因为语法或属性限制触发Invalid filter clause错误,下面给你详细说说解决方案:

为什么直接用NOT STARTSWITH会报错?

通常有这几个常见原因:

  • 属性不支持过滤:不是所有User属性都支持STARTSWITH或NOT操作,比如aboutMe这类描述性属性就不行,得先确认你要过滤的属性(比如displayName、userPrincipalName)是否在Graph API支持过滤的列表里
  • 语法错误:比如漏了括号、用了中文引号,或者运算符写错,正确的组合语法应该是NOT STARTSWITH(属性名, '前缀值')
  • API版本问题:老版本的Graph API可能对某些过滤组合支持不好,建议用稳定的v1.0或最新的beta版本
原生Graph API请求的正确写法

如果你的目标属性支持过滤,直接用标准的$filter语法就行,比如要排除所有名字以「Admin」开头的用户:

GET https://graph.microsoft.com/v1.0/users?$filter=NOT STARTSWITH(displayName, 'Admin')

如果需要忽略大小写匹配,可以结合tolower函数:

GET https://graph.microsoft.com/v1.0/users?$filter=NOT STARTSWITH(tolower(displayName), 'admin')
C# SDK中的实现方法

用Microsoft Graph .NET SDK的话,写法和原生请求的过滤字符串完全一致,示例代码如下:

using Microsoft.Graph;
using Azure.Identity;

var scopes = new[] { "User.Read.All" };
var clientId = "你的客户端ID";
var tenantId = "你的租户ID";
var clientSecret = "你的客户端密钥";

// 初始化Graph客户端
var clientSecretCredential = new ClientSecretCredential(tenantId, clientId, clientSecret);
var graphClient = new GraphServiceClient(clientSecretCredential, scopes);

try
{
    // 服务器端过滤:排除displayName以Admin开头的用户
    var filteredUsers = await graphClient.Users
        .Request()
        .Filter("NOT STARTSWITH(displayName, 'Admin')")
        .Select(u => new { u.Id, u.DisplayName, u.UserPrincipalName }) // 只返回需要的属性,减少数据传输
        .GetAsync();

    foreach (var user in filteredUsers)
    {
        Console.WriteLine($"{user.DisplayName} - {user.UserPrincipalName}");
    }
}
catch (ServiceException ex)
{
    Console.WriteLine($"请求出错:{ex.Message}");
}
替代方案:客户端过滤

如果因为属性限制或API版本问题,服务器端过滤无法实现,你可以先获取所有用户,再在客户端进行过滤(注意:用户量大时不推荐,会占用较多带宽和内存):

var allUsers = await graphClient.Users.Request().GetAsync();
var filteredUsers = allUsers
    .Where(u => !string.IsNullOrEmpty(u.DisplayName) && !u.DisplayName.StartsWith("Admin", StringComparison.OrdinalIgnoreCase))
    .ToList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:09:02