集合属性“identifierUris”不能用于“where”查询表达式

时间:2016-08-30 05:49:53

标签: azure-active-directory

使用Microsoft.Azure.ActiveDirectory.GraphClient.ActiveDirectoryClient api我试图在AAD中找到一个与我想要的IdentifierUrl相同的现有应用程序。这是我可以决定创建一个或单独留下现有的。 我正在使用以下电话。但是我收到了这个错误:

The collection property 'identifierUris' cannot be used in a 'where' query expression. Collection properties are only supported as the source of 'any' or 'all' methods in a 'where' query option 

建议的方法是什么?感谢

    public static async Task<IApplication> FindApplicationByUrlAsync(string accessToken, string tenantId, string identifierUrl)
    {
        var graphClient = NewActiveDirectoryClient(accessToken, tenantId);
        var matches = await graphClient.Applications.Where(app => app.IdentifierUris.Contains(identifierUrl)).ExecuteAsync();
        return matches.CurrentPage.ToList().FirstOrDefault();
    }

1 个答案:

答案 0 :(得分:1)

使用Any功能:

var result = await client.Applications.Where(a => a.IdentifierUris.Any(i => i == identifierUri)).ExecuteAsync();

这将被转换为如下的请求:

https://graph.microsoft.com/beta/applications?$filter=identifierUris/any(c:c eq 'yourIdentifierUri')

有关 Azure AD Graph 的过滤器的详细信息,请访问: https://msdn.microsoft.com/en-us/library/azure/ad/graph/howto/azure-ad-graph-api-supported-queries-filters-and-paging-options