MS Graph - LINQ 查询返回不正确的结果

MS Graph - LINQ query returning incorrect results

问题: 以下是返回一个不正确的值。我可能遗漏了什么,如何纠正?该问题似乎纯粹与使用 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();

Ref:还有类似的LINQ例子如this and this

结果数据网格:

第二行的 Source 列值应为 Microsoft Account

如评论中所述:这是由不正确的字母大小写引起的,在代码中使用 #Ext# 但“用户名”是大写的 #EXT#

所以只需将代码中的 #Ext# 更改为 #EXT#