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;

非常感谢。这就是帮助:)