【发布时间】:2019-09-14 21:53:10
【问题描述】:
我有一个名为 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)
});
};
}
当我尝试在 GetParentViewModel 中调用 GetHobbies 和 GetFriends 的异步函数时,出现错误
CS4034: The ‘await’ operator can only be used within an async lambda expression. Consider marking this lambda expression with the async modifier.
我尝试了各种方法,尝试在“Select(item=>..”之前将其标记为异步,但没有成功,在“children = await parentModel”之后有一个 await 关键字,但它似乎不起作用。 ..有人可以帮忙..
我通过编写一个单独的异步函数来获取孩子,但不是高于它。大家有什么建议
谢谢。
【问题讨论】:
-
抱歉做了一个小改动以显示代码返回 ParentViewModel.. 干杯
标签: c# linq asynchronous async-await expression