2017-02-18 10 views
0

CS1061 Error «Task>» не содержит определение для «FirstOrDefault» и никакого метода расширения «FirstOrDefault» приняв первый аргумент типа «Task>» может можно найти (вы без вести с помощью директивы или ссылка на сборку?),Задача не содержит определение для «FirstOrDefault»

сделать веб-приложение с контроллером facebook, включали использование 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) 
    ... 
} 
+0

Какова переменная currentClaims? Чтобы использовать FirstOrDefault, тип должен быть IEnumerable. –

ответ

10

Вы пропускаете await перед UserManager.GetClaimsAsync():

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

Look близко к сообщению об ошибке. GetClaimsAsync возвращает тип Task<IList<Claim>>, нет type список. Тип задачи не имеет метода FirstOrDefault. Как указывали другие люди, дождитесь GetClaimsAsync, и это сработает.

В качестве примечания стороны, сделайте не.Result здесь как тупик в большинстве сред. См. this article для объяснения причин этого, а также this article в отношении передовых методов async/await.

Смежные вопросы