Microsoft Graph Client SDK-按名称过滤组

时间:2019-04-12 22:06:57

标签: microsoft-graph

一个相当简单的问题,但是我无法将查询Graph的基本httpClient方法转换为SDK方法。我正在使用以下内容,并且效果很好:

    var filter = "IT";
    var response = await httpClient.GetAsync($"{webOptions.GraphApiUrl}/beta/groups?$filter=startswith(displayName, '{filter}')&$select=id,displayName");

...现在我正尝试使用以下SDK进行过滤:

    var groups = await graphServiceClient.Groups
        .Request()
        .Filter($"displayName startswith {filter}")
        .Select("id, displayName")
        .GetAsync();

我还尝试了.Filter($"startswith("displayName", {filter}))和其他变体。

我遇到一个invalid filter clause错误。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

显然是因为Filter方法提供的过滤器表达式无效,所以可以这样验证它:

var message = graphServiceClient.Groups
        .Request()
        .Filter($"displayName startswith '{filter}'")
        .Select("id, displayName").GetHttpRequestMessage();

生成的message.RequestUri将返回以下值:

https://graph.microsoft.com/v1.0/groups?$filter=displayName startswith '{filter}'&$select=id, displayName}

需要这样指定一个有效的过滤器表达式:

.Filter($"startswith(displayName, '{filter}')")

如果要为beta类切换到GraphServiceClient版,可以这样指定:

graphServiceClient.BaseUrl = "https://graph.microsoft.com/beta";