C# 使用LINQ对两个集合进行迭代以检查匹配属性的正确方法是什么?
我试图根据Graph Client SDK的结果以及用户在前端.NET核心网站中选择的组来检查用户是否是组的成员。我有一个使用两个C# 使用LINQ对两个集合进行迭代以检查匹配属性的正确方法是什么?,c#,asp.net-core,C#,Asp.net Core,我试图根据Graph Client SDK的结果以及用户在前端.NET核心网站中选择的组来检查用户是否是组的成员。我有一个使用两个foreach循环的工作示例,但我确信使用lambda有一种更干净的方法。我以前用过它们,但我想我只是有点拘泥于语法 我有一个GroupModel列表和一组Microsoft Graph Client SDK结果: [BindProperty] public List<GroupModel> Groups { get; set; } public asy
foreach
循环的工作示例,但我确信使用lambda有一种更干净的方法。我以前用过它们,但我想我只是有点拘泥于语法
我有一个GroupModel
列表和一组Microsoft Graph Client SDK结果:
[BindProperty]
public List<GroupModel> Groups { get; set; }
public async Task OnPostAsync()
{
var graphServiceClient = await GetAuthenticatedGraphClient();
IUserMemberOfCollectionWithReferencesPage memberOfGroups = await graphServiceClient.Me.MemberOf.Request().GetAsync();
var isMember = false;
//cycle through groups the user is a member of
foreach (var member in memberOfGroups)
{
//cycle through groups used for permission to the asset
foreach (var group in Groups)
{
if (group.GroupId == member.Id)
{
//user is a member of the group being set
isMember = true;
}
}
}
if (!isMember)
{
ModelState.AddModelError("GroupsError", "You are not a member...");
}
}
无法将lambda表达式转换为类型“Directory.Object”,因为它不是委托类型
使用Linq:
var isMember = memberOfGroups.Any(mog => Groups.Any(g => g.GroupId == mog.Id));
我相信您可以将forEach与where子句一起使用。
var isMember = memberOfGroups.Any(mog => Groups.Any(g => g.GroupId == mog.Id));