【问题标题】:Task does not contain a definition for 'FirstOrDefault'任务不包含“FirstOrDefault”的定义
【发布时间】:2017-07-08 08:16:28
【问题描述】:

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

使用 facebook 控制器制作 Web 应用程序,包括使用 system.linq,但仍然收到 FirstOrDefault() 的错误。 我不知道问题是什么,我也重新安装了 Visual Studio,因为他同样适用于我朋友的笔记本电脑。 我四处寻找该方法是否存在于库中并且它在那里但仍然没有超过这个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)
    ...
}

【问题讨论】:

  • currentClaims 变量的类型是什么?要使用 FirstOrDefault,类型必须是 IEnumerable。

标签: c# async-await


【解决方案1】:

您在UserManager.GetClaimsAsync() 前面缺少await

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

【讨论】:

    【解决方案2】:

    仔细查看错误消息。 GetClaimsAsync 返回类型 Task&lt;IList&lt;Claim&gt;&gt;not 类型列表。 Task 类型没有 FirstOrDefault 方法。正如其他人所指出的那样,等待GetClaimsAsync 它会起作用。

    附带说明,不要在此处使用.Result,因为这会在大多数环境中陷入僵局。请参阅 this article 了解为什么会死锁以及 this article 了解异步/等待最佳实践。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-26
      • 2020-04-27
      • 2015-07-24
      相关资源
      最近更新 更多