title: How can I use "Where" with an async predicate?
body: <p>I have an async predicate method like this:</p>
  
  <pre><code>private async Task&lt;bool&gt; MeetsCriteria(Uri address)
  {
      //Do something involving awaiting an HTTP request.
  }
  </code></pre>
  
  <p>Say I have a collection of <code>Uri</code>s:</p>
  
  <pre><code>var addresses = new[]
  {
      new Uri("http://www.google.com/"),
      new Uri("http://www.stackoverflow.com/") //etc.
  };
  </code></pre>
  
  <p>I want to filter <code>addresses</code> using <code>MeetsCriteria</code>. I want to do this asynchronously; I want multiple calls to the predicate to run asynchronously, and I want to then wait for all of them to complete and produce the filtered result set. Unfortunately, LINQ doesn't appear to support asynchronous predicates, so something like this <strong>doesn't</strong> work:</p>
  
  <pre><code>var filteredAddresses = addresses.Where(MeetsCriteria);
  </code></pre>
  
  <p>Is there a similarly convenient way to do this?</p>