为什么我不能直接访问财产”.SingleAsync().财产”
本文关键字:财产 SingleAsync 访问 不能 为什么 | 更新日期: 2023-09-27 18:25:48
我的测试代码:
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>'
的参数。
你能解释一下为什么吗?
SingleAsync
返回一个Task<UserProfileViewModels>
。该任务上没有您的财产。您需要等待任务才能取回实际UserProfileViewModels
结果
要告诉编译器您想要结果的属性而不是任务,您需要将 await 表达式括在括号中:
string pictureUrl = (await db.UserProfile.SingleAsync(x => x.Id == id)).PictureUrl;