问题:以下返回一个不正确的值。我可能缺少什么以及如何纠正?该问题似乎纯粹与 LINQ
的使用有关,而不是 MS Graph。
备注:虽然这是一个更简单的情况,只有两种类型的值(Azure AD 和 MS Account),但在实际场景中,情况将不止两种。因此,我们不能只对简单的情况使用简单的三元运算符(例如 condition ? consequent : Alternative
) - 相反,它必须嵌入多个情况。我将遇到两种以上的情况,如以下 LINQ 查询所示。
LINQ:
dgrdUsers
是如下所示的 DataGrid 的名称。
Microsoft.Graph.IGraphServiceUsersCollectionPage users = await graphClient.Users.Request()
.Select("displayName, userPrincipalName, userType")
.GetAsync();
List<User> lstUsers = (List<User>)users.CurrentPage.ToList();
dgrdUsers.ItemsSource = (
from User in lstUsers
select new
{
DisplayName = User.DisplayName,
UserPrincipalName = User.UserPrincipalName,
UserType = User.UserType,
Source =
(
(User.UserType == "Member" && User.UserPrincipalName.Contains("#Ext#") == false) ? "Azure Active Directory" :
(User.UserType == "Member" && User.UserPrincipalName.Contains("#Ext#")) ? "Microsoft Account" :
(User.UserType == "Guest" && User.ExternalUserState == "Accepted") ? "External Azure Active Directory" :
(User.UserType == "Guest" && User.ExternalUserState == "PendingAcceptance") ? "Invited user" : "Unknown"
)
}
).ToList();
结果数据网格:
第二行中的Source
列值应为Microsoft Account
。
最佳答案
正如评论中所说:是字母大小写错误导致的,代码中使用#Ext#
,但“用户名”却是大写的#EXT#
。
所以只需将代码中的#Ext#
更改为#EXT#
即可。
关于c# - MS Graph - LINQ 查询返回不正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62926660/