linq 找不到AD组System.NullReferenceException:'对象引用未设置为对象的示例,'

tvz2xvvm  于 2023-09-28  发布在  其他
关注(0)|答案(2)|浏览(99)

我需要澄清一下。我正在尝试验证IEnumerable对象中的字符串中的组。代码如下:

Startup.cs

// Makes a call to Microsoft Graph
var group = await graphClient.Me.TransitiveMemberOf
    .Request()
    .Header("ConsistencyLevel", "eventual")
    .GetAsync();

// Gets all AD Groups that are assigned to me
IEnumerable<AzureADGroupInfo> allADGroups = JsonConvert.DeserializeObject<IEnumerable<AzureADGroupInfo>>(JsonConvert.SerializeObject(group));

//This filters the group that I Need
IEnumerable<AzureADGroupInfo> relevantADGroups = allADGroups.Where(t => t.DisplayName.Contains("Admin"));

this.SetUserCompany(relevantADGroups);

在allADGroups中,有10个我关联的组,但我想要的一个组是Admin组。在调试中,Admin组存在于allADGroups变量中,但无论出于何种原因,在where子句中查找t.DisplayName.Contains(“Admin”)时,它都找不到它。对于revelantADGroups变量,它返回null。根据我的理解,这应该能够在IEnumerable中找到该组的显示名称。我误会什么了?

sqserrrh

sqserrrh1#

在Azure AD Graph API中,在REST响应中,displayName属性应该是camelCase(而不是“DisplayName”),否则将找不到它。

tzdcorbm

tzdcorbm2#

我在回答我自己的问题,看看是否有人面临类似的问题。虽然上面的代码带回了Azure AD中的所有组,并尝试使用.Contains(“Admin”)进行筛选,但它显示此错误:

System.NullReferenceException: 'Object reference not set to an instance of an object.'

我发现的解决方案,帮助我大的时间是在这里找到List.Where( "string".Contains()) returns NULL in a LINQ Query。简而言之,我做了更改,以强制说明Azure AD中的所有组确实不是null。希望这对你有帮助。

相关问题