Код: Выделить всё
Cannot implicitly convert type 'bool' to 'System.Threading.Tasks.Task'
Код: Выделить всё
public async Task GetMembersOf(GroupQueryViewModel model)
{
var graphClient = await GetGraphClient();
var filter = GetFilterQuery(model);
var groups = await graphClient.Groups.GetAsync(requestConfiguration =>
{
requestConfiguration.QueryParameters.Filter = filter;
requestConfiguration.QueryParameters.Select = ["id"];
});
var groupIds = new List();
var pageIterator = PageIterator.CreatePageIterator(
graphClient,
groups,
(group) =>
{
groupIds.Add(group.Id);
return true;
},
(req) =>
{
return req;
});
await pageIterator.IterateAsync();
ConcurrentDictionary allMembers = new ConcurrentDictionary();
Parallel.ForEachAsync(groupIds, async (id, cancellationToken) =>
{
var members = await graphClient.Groups[id].Members.GetAsync(requestConfiguration =>
{
requestConfiguration.QueryParameters.Select = [
"userPrincipalName", "displayName", "mail",
"givenName", "surname", "photo"
];
});
var iterator = PageIterator.CreatePageIterator(
graphClient,
members,
(user) =>
{
if (allMembers.ContainsKey(user.Id))
return true;
var nameParts = user.UserPrincipalName.Split('@');
EmployeeViewModel employee = new EmployeeViewModel
{
/* Creation logic */
};
allMembers.TryAdd(user.Id, employee);
return true;
},
(req) =>
{
return req;
});
await iterator.IterateAsync();
});
return allMembers.Values;
}
PageIterator правильно заявляет, что он ожидает Function.
Внутри лямбды нет вызова async/await, поэтому я не понимаю, почему он ожидает, что возвращаемое значение будет Task.
Я попробовал это:
Код: Выделить всё
async (user) =>
{
/* Same logic */
}
Кто-нибудь знает, что я могу сделать, чтобы это исправить?
Я предполагаю, что это происходит из контекста, в котором он выполняется, но я не могу понять это.
Поскольку первый PageIterator для групп работает нормально, мое единственное предположение состоит в том, что это происходит в результате выполнения внутри оператора foreach.
Я попробовал поменять местами
Код: Выделить всё
Parallel.ForEach(...)
Код: Выделить всё
foreach(...)
Подробнее здесь: https://stackoverflow.com/questions/799 ... a-function
Мобильная версия