我知道它看起来很简单,但我花了很多时间在这上面。
不知怎的,我无法成功返回列表...
public Task<List<MyViewModel>> getGoodElections(long actionId)
{
var elections = _DBsource.ElectionTable.Where(e => e.ActionId == actionId && e.Status == "OK").ToListAsync();
List< MyViewModel > list = Mapper.Map<List<MyViewModel>>(elections);
return list;
}
在“返回列表中”,它给了我错误:
无法隐式将
System.Collections.Generic.List<MyViewModel>
类型转换为System.Threading.Tasks.Task<System.Collections.Generic.List<MyViewModel>>
有什么想法吗?
答案 0 :(得分:6)
您没有等待数据库调用的结果。因此,从DB调用返回的elections
类型为Task<>
,无论您的数据库调用返回的是什么DTO类型(即使您返回Task
,AutoMapper赢了&# 39;无论如何都能够映射结果。)
您需要创建方法async
,然后等待数据库调用的结果,然后再将其传递给Automapper进行映射。
public async Task<List<MyViewModel>> getGoodElections(long actionId)
{
var elections = await _DBsource.ElectionTable
.Where(e => e.ActionId == actionId && e.Status == "OK")
.ToListAsync();
var list = Mapper.Map<List<MyViewModel>>(elections);
return list;
}
答案 1 :(得分:0)
您还没有等待任务(ToListAsync),因此您没有List<Election>
。您应该等待对ToListAsync()的调用,并将该方法标记为async,如下所示。
public async Task<List<MyViewModel>> getGoodElections(long actionId)
{
var elections = await _DBsource.ElectionTable.Where(e => e.ActionId == actionId && e.Status == "OK").ToListAsync();
List< MyViewModel > list = Mapper.Map<List<MyViewModel>>(elections);
return list;
}