任务不包含'FirstOrDefault'的定义

问题描述 投票:0回答:2

错误CS1061“任务>”不包含“FirstOrDefault”的定义,并且没有可以找到接受“任务>”类型的第一个参数的扩展方法“FirstOrDefault”(您是否缺少using指令或程序集引用?),

使用facebook控制器创建一个Web应用程序,包括使用system.linq但仍然得到FirstOrDefault()的错误。我不知道问题是什么,我重新安装了视觉工作室,因为他同样的事情适用于我的朋友笔记本电脑。我耍弄了一下,看看这个方法是否存在于库中,它是否存在但仍然没有超过这个Image for the same

public async Task<ActionResult> Posts()
{
    var currentClaims = UserManager.GetClaimsAsync(HttpContext.Identity.GetUserId());

    // Error occurs here at FirstOrDefault
    var accesstoken = currentClaims.FirstOrDefault(x = > x.Type == "urn:tokens:facebook");

    if (accesstoken == null)
    ...
}
c# async-await
2个回答
10
投票

你在await面前缺少一个UserManager.GetClaimsAsync()

var currentClaims = await UserManager.GetClaimsAsync(...);

2
投票

仔细查看错误消息。 GetClaimsAsync返回类型Task<IList<Claim>>,而不是类型列表。 Task类型没有FirstOrDefault方法。正如其他人所指出的那样,等待GetClaimsAsync并且它会起作用。

作为旁注,请不要在这里使用.Result,因为在大多数环境中它会死锁。请参阅this article,了解为什么会出现这种情况以及async / await最佳实践中的this article

© www.soinside.com 2019 - 2024. All rights reserved.