Я получаю следующее сообщение об ошибке при попытке использовать async
лямбда в IEnumerable.SelectMany
:Как использовать асинхронную лямбду с помощью 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));
Есть ли способ обойти это?
вы можете предоставить заявление на 'Functions.GetDataAsync'? – Grundy
@Grundy 'Задача>', но я добавил полную декларацию к вопросу. Где 'T' отличается от типа' myEnumerable' –
CodingIntrigue
@HimBromBeere, выберите return _collection collection_, но я думаю, что OP нужна простая коллекция – Grundy