I'm getting the following error when trying to use an async
lambda within IEnumerable.SelectMany
:
var result = myEnumerable.SelectMany(async (c) => await Functions.GetDataAsync(c.Id));
The type arguments for method 'IEnumerable System.Linq.Enumerable.SelectMany(this IEnumerable, Func>)' cannot be inferred from the usage. Try specifying the type arguments explicitly
Where GetDataAsync
is defined as:
public interface IFunctions {
Task<IEnumerable<DataItem>> GetDataAsync(string itemId);
}
public class Functions : IFunctions {
public async Task<IEnumerable<DataItem>> GetDataAsync(string itemId) {
// return await httpCall();
}
}
I guess because my GetDataAsync
method actually returns a Task<IEnumerable<T>>
. But why does Select
work, surely it should throw the same error?
var result = myEnumerable.Select(async (c) => await Functions.GetDataAsync(c.Id));
Is there any way around this?