我的测试代码:
using (var db = new MyDbContext())
{
string id = "";
string pictureUrl = db.UserProfile.Single(x => x.Id == id).PictureUrl; //valid syntax
var user = await db.UserProfile.SingleAsync(x => x.Id == id); //valid syntax
string _pictureUrl = user.PictureUrl; //valid syntax
}
我的问题是:我无法像这样直接声明pictureUrl
:
string pictureUrl = await db.UserProfile.SingleAsync(x => x.Id == id).PictureUrl;
我试图这样做,它向我提出了错误消息:
'Task<UserProfileViewModels>'
不包含定义'PictureUrl'
并且没有扩展方法'PictureUrl'
接受第一个 可以找到'Task<UserProfileViewModels>'
类型的参数。
你能解释一下为什么吗?
答案 0 :(得分:8)
SingleAsync
返回Task<UserProfileViewModels>
。这项任务没有你的财产。您需要等待任务返回实际的UserProfileViewModels
结果
告诉编译器你想要结果的属性而不是你需要在括号中包围await表达式的任务:
string pictureUrl = (await db.UserProfile.SingleAsync(x => x.Id == id)).PictureUrl;