2017-03-08 68 views
1

我有一個方法簽名如下: Task<IEnumerable<MyClass>> MethodAsync()如何在從異步方法返回時隱式轉換IEnumerable?

這種方法可以做出異步的,但是我現在的實現可能只返回任務沒有等待,因爲沒有工作,我需要在方法進一步執行。

在我來說,我想使用實體框架立即查詢數據源並返回結果集如下:

Task<IEnumerable<MyClass>> Method() 
{ 
    return DbContext.Entities.Where(x => x.Condition).ToArrayAsync(); 
} 

現在我得到以下錯誤:

Cannot implicitly convert type 'System.Threading.Tasks.Task<MyClass[]>' 
to 'System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<MyClass>>' 

我可以return await EF呼叫,但我認爲這是不必要的開銷,因爲它在不需要時等待呼叫。

有沒有辦法隱式地將實體框架中的值從方法中返回到返回類型而無需等待呢?

+2

爲什麼不更改簽名任務? '任務方法()' – Igor

+1

@Igor並在您處於狀態時重命名爲'MethodAsync()'。 –

+0

@Igor目前是impl。返回一個數組,但其他impl。可能只是想返回一個IEnumerable。 – Waaghals

回答

-1

我的確認爲轉換爲異步方法並使用return await是處理此問題的正確方法。

否則,你就必須要連接的是用鉛垂線的轉換 - 這正是異步......等待會爲你做很好

相關問題