簡體   English   中英

如何使用Azure AD Graph API Client Library 2.0使用LINQ查找具有特定許可證的Azure AD用戶

[英]How can you use LINQ to find Azure AD users with specific licenses using the Azure AD Graph API Client Library 2.0

我開始使用示例.NET Graph API控制台應用程序 ,我開始工作。 我希望能夠為具有特定許可證的所有用戶查詢Azure AD。 我想我必須做一些嵌套的LINQ查詢。

這是我的第一次嘗試

IUserCollection userCollection = activeDirectoryClient.Users;

            searchResults = userCollection.Where(user =>
               user.AssignedPlans.Where(plans => plans.Service.Contains("exchange")) &&
               user.DisplayName.StartsWith(searchString)).ExecuteAsync().Result;

            usersList = searchResults.CurrentPage.ToList();

我收到一條錯誤,上面寫着“錯誤3運算符'&&'無法應用於'System.Collections.Generic.IEnumerable'和'bool”類型的操作數

我嘗試將.Where更改為.Any並將其編譯。

searchResults = userCollection.Where(user =>
                   user.AssignedPlans.Any(plans => plans.Service.Contains("exchange")) &&
                   user.DisplayName.StartsWith(searchString)).ExecuteAsync().Result;

但是當我運行代碼時,我在控制台中收到此錯誤。

Error getting User Expression of type 'System.Collections.Generic.IList`1[Microsoft.Azure.ActiveDirectory.GraphClient.Internal.AssignedPlan]' cannot be used for
 parameter of type 'System.Collections.Generic.IEnumerable`1[Microsoft.Azure.ActiveDirectory.GraphClient.AssignedPlan]' of method 'Boolean Any[AssignedPlan](Sys
tem.Collections.Generic.IEnumerable`1[Microsoft.Azure.ActiveDirectory.GraphClient.AssignedPlan], System.Func`2[Microsoft.Azure.ActiveDirectory.GraphClient.Assig
nedPlan,System.Boolean])'

用戶可以擁有許多分配的計划。 我需要返回所有至少有一個已分配計划的用戶,其服務等於“交換”

在這里發生了一些事情 - 我擔心我沒有任何合適的答案。 首先,我們的客戶端庫不支持您嘗試的那種構造,但我相信我們很快就會解決這個問題。 更大的問題是我們的服務端不支持查詢多值復雜類型(在本例中為AssignedPlan)。 我將為此項目提交功能請求。

我們目前唯一可用的解決方法是您嘗試使用我們今天支持的任何內容過濾結果集(請參閱http://blogs.msdn.com/b/aadgraphteam/archive/2014/02/11/support -for-disjunctive-or-filter-clauses-in-the-graph-directory-service.aspx或等效的通過客戶端庫),然后進行客戶端過濾。 不理想......

我們認為可能有幫助的另一件事是,如果我們提供Any(*)過濾器,它允許您過濾設置的屬性。 這樣你就可以過濾到那些已經分配了普蘭斯的用戶,並從那里開始。

讓我知道你的想法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM