У меня есть функция с именем GetParentViewModel, как показано ниже, которая преобразует класс родительской модели в ParentViewModel, чтобы его можно было отправить в представление.
public class Parent
{
public int ParentId { get; set; }
public string ParentName { get; set; }
public IEnumerable<Child> children{ get; set; }
}
public class Child
{
public int ChildId { get; set; }
public string ChildName { get; set; }
private IEnumerable<Friend> friends { get; set; }
public IEnumerable<Hobby> hobbies { get; set; }
}
public async Task<List<Hobby> GetHobbies(int childId)
{
return await..
}
public async Task<List<Friend> GetFriends(int childId)
{
reutrn await..
}
public async Task<ParentViewModel> GetParentViewModel(Parent parentModel)
{
return new ParentViewModel()
{
ParentId = parentModel.ParentId,
ParentName = parentModel.ParentName,
children = parentModel.children.Select(item => new ChildViewModel()
{
ChildId = item.ChildId,
ChildName = item.ChildName,
hobbies = await GetHobbies(item.ChildId),
friends = await GetFriends(item.ChildId)
});
};
}
когда я пытаюсь вызвать асинхронные функции для GetHobbies и GetFriends, внутри GetParentViewModel я получаю сообщение об ошибке
CS4034: The ‘await’ operator can only be used within an async lambda expression. Consider marking this lambda expression with the async modifier.
Я пробовал все виды вещей, пытался пометить как асинхронные непосредственно перед «Select (item => ..»), но безуспешно, имел ключевое слово await сразу после «children = await parentModel», но, похоже, оно не работает. Может кто-нибудь помочь ..
Я заработал, написав отдельную асинхронную функцию для получения дочерних элементов, но не выше. Любые предложения, пожалуйста
спасибо.