У меня есть метод асинхронного предиката, например:
private async Task<bool> MeetsCriteria(Uri address)
{
//Do something involving awaiting an HTTP request.
}
Скажем, у меня есть коллекция Uri
s:
var addresses = new[]
{
new Uri("http://www.google.com/"),
new Uri("http://www.stackoverflow.com/") //etc.
};
Я хочу фильтровать addresses
с помощью MeetsCriteria
. Я хочу сделать это асинхронно; Я хочу, чтобы множественные вызовы предиката выполнялись асинхронно, и я хочу, чтобы они дождались завершения их и создания фильтрованного набора результатов. К сожалению, LINQ не поддерживает асинхронные предикаты, поэтому что-то вроде не работает:
var filteredAddresses = addresses.Where(MeetsCriteria);
Есть ли такой же удобный способ сделать это?