C# 为什么我不能直接访问属性;。SingleAsync();?
我的测试代码:C# 为什么我不能直接访问属性;。SingleAsync();?,c#,.net,async-await,C#,.net,Async Await,我的测试代码: 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 _pic
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;
我尝试过这样做,它向我抛出错误消息:
“任务”
不包含任务的定义
'PictureUrl'
并且没有扩展方法'PictureUrl'
接受第一个
可以找到类型为'Task'
的参数
你能解释一下原因吗?
SingleAsync
返回一个任务
。该任务上没有您的属性。您需要等待任务返回实际的UserProfileViewModels
结果
要告诉编译器您想要的是结果的属性而不是任务,您需要将wait表达式括在括号中:
string pictureUrl = (await db.UserProfile.SingleAsync(x => x.Id == id)).PictureUrl;
非常感谢。这就是帮助:)