Как показано ниже, мой Azure Portal
правильно отображает значение столбца Source
как Windows Server AD
для пользователей, которые были перенесены с Windows Active Directory
на Azure Active Directory
.
Показанные пользователи в Azure Portal :
Now in my WPF
app, I am using Microsoft Graph , чтобы отобразить тот же список в DataGrid
. Но следующий запрос LINQ
по-прежнему отображает значение столбца Source
перемещенных пользователей как Azure Active Directory
вместо Windows Server AD
:
var users = await graphClient.Users
.Request()
.Select("displayName, userPrincipalName, onPremisesUserPrincipalName, userType")
.GetAsync();
List<User> lstUsers = (List<User>)users.CurrentPage.ToList();
//I noticed the following Linq without lambda works better if select case staement have multiple conditions: https://stackoverflow.com/a/936136/1232087
var userslist =
(
from User in lstUsers
select new
{
DisplayName = User.DisplayName,
UserPrincipalName = User.UserPrincipalName,
OnPremisesUserPrincipalName = User.OnPremisesUserPrincipalName,
UserType = User.UserType,
Source =
(
User.UserType == "Member" && !User.UserPrincipalName.Contains("#EXT#") ? "Azure Active Directory" :
User.UserType == "Member" && User.UserPrincipalName.Contains("#EXT#") ? "Microsoft Account" :
User.UserType == "Guest" && User.ExternalUserState == "Accepted" ? "External Azure Active Directory" :
(User.UserType == "Member" && string.IsNullOrEmpty(User.OnPremisesUserPrincipalName) == false) ? "Windows Server AD" :
User.UserType == "Guest" && User.ExternalUserState == "PendingAcceptance" ? "Invited user" : "Unknown"
)
}
);
Отображение DataGrid приведенного выше запроса приводит к мое приложение WPF :
Согласно приведенному выше запросу LINQ значения внутри красного должны отображаться как Windows Server AD
, потому что OnPremisesUserPrincipalName
значение запроса (показанное в столбце On Prem Name
ниже) не равно нулю
Question: Why the above LINQ
query is returning the Source
column value as Azure Active Directory
instead of Windows Server AD
. This seems to be a LINQ related issue unless I'm missing something here. There are similar LINQ examples здесь и здесь .