Я получаю следующую ошибку при попытке использовать async
lambda внутри IEnumerable.SelectMany
:
var result = myEnumerable.SelectMany(async (c) => await Functions.GetDataAsync(c.Id));
Аргументы типа для метода 'IEnumerable System.Linq.Enumerable.SelectMany(это IEnumerable, Func > ) 'не может быть выведенных из использования. Попробуйте явно указать аргументы типа
Где GetDataAsync
определяется как:
public interface IFunctions {
Task<IEnumerable<DataItem>> GetDataAsync(string itemId);
}
public class Functions : IFunctions {
public async Task<IEnumerable<DataItem>> GetDataAsync(string itemId) {
// return await httpCall();
}
}
Я думаю, потому что мой метод GetDataAsync
фактически возвращает Task<IEnumerable<T>>
. Но почему работает Select
, наверняка, он должен выбросить ту же ошибку?
var result = myEnumerable.Select(async (c) => await Functions.GetDataAsync(c.Id));
Есть ли способ обойти это?