title: ToAsyncEnumerable().Single() vs SingleAsync()
body: <p>I'm constructing and executing my queries in a way that's independent of EF-Core, so I'm relying on <code>IQueryable&lt;T&gt;</code> to obtain the required level of abstraction.  I'm replacing awaited <code>SingleAsync()</code> calls with awaited <code>ToAsyncEnumerable().Single()</code> calls.  I'm also replacing <code>ToListAsync()</code> calls with <code>ToAsyncEnumerable().ToList()</code> calls.  But I just happened upon the <code>ToAsyncEnumerable()</code> method so I'm unsure I'm using it correctly or not.</p>
  
  <p>To clarify which extension methods I'm referring to, they're defined as follows:</p>
  
  <ul>
  <li><code>SingleAsync</code> and <code>ToListAsync</code> are defined on the <code>EntityFrameworkQueryableExtensions</code> class in the <code>Microsoft.EntityFrameworkCore</code> namespace and assembly.</li>
  <li><code>ToAsyncEnumerable</code> is defined on the <code>AsyncEnumerable</code> class in the <code>System.Linq</code> namespace in the <code>System.Interactive.Async</code> assembly.</li>
  </ul>
  
  <p>When the query runs against EF-Core, are the calls <code>ToAsyncEnumerable().Single()/ToList()</code> versus <code>SingleAsync()/ToListAsync()</code> equivalent in function and performance?  If not then how do they differ?</p>