Я пытаюсь проверить, является ли пользователь членом группы, на основе результатов из Graph Client SDK и выбора групп, выбранных пользователем на внешнем веб-сайте .NET Core.У меня есть рабочий образец, использующий две петли foreach
, но я уверен, что есть более чистый способ использования лямбды.Я использовал их в прошлом, но я немного застрял в синтаксисе.
У меня есть список 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...");
}
}
Я пробовал следующее, однако это выдает мне ошибку:
bool isMemberLambda = Groups.ForEach(g => memberOfGroups.Contains(m => m.Id == g.GroupId));
Невозможно преобразовать лямбда-выражение в тип 'Directory.Object', поскольку это не тип делегата