diff --git a/src/EFCore/Extensions/EntityFrameworkQueryableExtensions.cs b/src/EFCore/Extensions/EntityFrameworkQueryableExtensions.cs index bbced8eb07f..df247afd10d 100644 --- a/src/EFCore/Extensions/EntityFrameworkQueryableExtensions.cs +++ b/src/EFCore/Extensions/EntityFrameworkQueryableExtensions.cs @@ -35,6 +35,9 @@ public static class EntityFrameworkQueryableExtensions /// /// The query source. /// The query string for debugging. + /// + /// is null. + /// public static string ToQueryString([NotNull] this IQueryable source) { Check.NotNull(source, nameof(source)); @@ -66,6 +69,9 @@ public static string ToQueryString([NotNull] this IQueryable source) /// A task that represents the asynchronous operation. /// The task result contains true if the source sequence contains any elements; otherwise, false. /// + /// + /// is null. + /// public static Task AnyAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -97,6 +103,9 @@ public static Task AnyAsync( /// The task result contains true if any elements in the source sequence pass the test in the specified /// predicate; otherwise, false. /// + /// + /// or is null. + /// public static Task AnyAsync( [NotNull] this IQueryable source, [NotNull] Expression> predicate, @@ -130,6 +139,9 @@ public static Task AnyAsync( /// The task result contains true if every element of the source sequence passes the test in the specified /// predicate; otherwise, false. /// + /// + /// or is null. + /// public static Task AllAsync( [NotNull] this IQueryable source, [NotNull] Expression> predicate, @@ -165,6 +177,9 @@ public static Task AllAsync( /// A task that represents the asynchronous operation. /// The task result contains the number of elements in the input sequence. /// + /// + /// is null. + /// public static Task CountAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -196,6 +211,9 @@ public static Task CountAsync( /// The task result contains the number of elements in the sequence that satisfy the condition in the predicate /// function. /// + /// + /// or is null. + /// public static Task CountAsync( [NotNull] this IQueryable source, [NotNull] Expression> predicate, @@ -227,6 +245,9 @@ public static Task CountAsync( /// A task that represents the asynchronous operation. /// The task result contains the number of elements in the input sequence. /// + /// + /// is null. + /// public static Task LongCountAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -259,6 +280,9 @@ public static Task LongCountAsync( /// The task result contains the number of elements in the sequence that satisfy the condition in the predicate /// function. /// + /// + /// or is null. + /// public static Task LongCountAsync( [NotNull] this IQueryable source, [NotNull] Expression> predicate, @@ -294,6 +318,12 @@ public static Task LongCountAsync( /// A task that represents the asynchronous operation. /// The task result contains the first element in . /// + /// + /// is null. + /// + /// + /// contains no elements. + /// public static Task FirstAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -325,6 +355,20 @@ public static Task FirstAsync( /// The task result contains the first element in that passes the test in /// . /// + /// + /// or is null. + /// + /// + /// + /// No element satisfies the condition in + /// + /// + /// -or - + /// + /// + /// contains no elements. + /// + /// public static Task FirstAsync( [NotNull] this IQueryable source, [NotNull] Expression> predicate, @@ -357,6 +401,9 @@ public static Task FirstAsync( /// The task result contains default ( ) if /// is empty; otherwise, the first element in . /// + /// + /// is null. + /// public static Task FirstOrDefaultAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -390,6 +437,9 @@ public static Task FirstOrDefaultAsync( /// is empty or if no element passes the test specified by ; otherwise, the first /// element in that passes the test specified by . /// + /// + /// or is null. + /// public static Task FirstOrDefaultAsync( [NotNull] this IQueryable source, [NotNull] Expression> predicate, @@ -425,6 +475,12 @@ public static Task FirstOrDefaultAsync( /// A task that represents the asynchronous operation. /// The task result contains the last element in . /// + /// + /// is null. + /// + /// + /// contains no elements. + /// public static Task LastAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -456,6 +512,20 @@ public static Task LastAsync( /// The task result contains the last element in that passes the test in /// . /// + /// + /// or is null. + /// + /// + /// + /// No element satisfies the condition in . + /// + /// + /// -or- + /// + /// + /// contains no elements. + /// + /// public static Task LastAsync( [NotNull] this IQueryable source, [NotNull] Expression> predicate, @@ -488,6 +558,9 @@ public static Task LastAsync( /// The task result contains default ( ) if /// is empty; otherwise, the last element in . /// + /// + /// is null. + /// public static Task LastOrDefaultAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -521,6 +594,9 @@ public static Task LastOrDefaultAsync( /// is empty or if no element passes the test specified by ; otherwise, the last /// element in that passes the test specified by . /// + /// + /// or is null. + /// public static Task LastOrDefaultAsync( [NotNull] this IQueryable source, [NotNull] Expression> predicate, @@ -557,6 +633,20 @@ public static Task LastOrDefaultAsync( /// A task that represents the asynchronous operation. /// The task result contains the single element of the input sequence. /// + /// + /// is null. + /// + /// + /// + /// contains more than one elements. + /// + /// + /// -or- + /// + /// + /// contains no elements. + /// + /// public static Task SingleAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -589,6 +679,26 @@ public static Task SingleAsync( /// The task result contains the single element of the input sequence that satisfies the condition in /// . /// + /// + /// or is null. + /// + /// + /// + /// No element satisfies the condition in . + /// + /// + /// -or- + /// + /// + /// More than one element satisfies the condition in . + /// + /// + /// -or- + /// + /// + /// contains no elements. + /// + /// public static Task SingleAsync( [NotNull] this IQueryable source, [NotNull] Expression> predicate, @@ -623,6 +733,12 @@ public static Task SingleAsync( /// ) /// if the sequence contains no elements. /// + /// + /// is null. + /// + /// + /// contains more than one element. + /// public static Task SingleOrDefaultAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -656,6 +772,12 @@ public static Task SingleOrDefaultAsync( /// The task result contains the single element of the input sequence that satisfies the condition in /// , or default ( ) if no such element is found. /// + /// + /// or is null. + /// + /// + /// More than one element satisfies the condition in . + /// public static Task SingleOrDefaultAsync( [NotNull] this IQueryable source, [NotNull] Expression> predicate, @@ -692,6 +814,9 @@ public static Task SingleOrDefaultAsync( /// A task that represents the asynchronous operation. /// The task result contains the minimum value in the sequence. /// + /// + /// is null. + /// public static Task MinAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -725,6 +850,9 @@ public static Task MinAsync( /// A task that represents the asynchronous operation. /// The task result contains the minimum value in the sequence. /// + /// + /// or is null. + /// public static Task MinAsync( [NotNull] this IQueryable source, [NotNull] Expression> selector, @@ -760,6 +888,9 @@ public static Task MinAsync( /// A task that represents the asynchronous operation. /// The task result contains the maximum value in the sequence. /// + /// + /// is null. + /// public static Task MaxAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -793,6 +924,9 @@ public static Task MaxAsync( /// A task that represents the asynchronous operation. /// The task result contains the maximum value in the sequence. /// + /// + /// or is null. + /// public static Task MaxAsync( [NotNull] this IQueryable source, [NotNull] Expression> selector, @@ -825,6 +959,9 @@ public static Task MaxAsync( /// A task that represents the asynchronous operation. /// The task result contains the sum of the values in the sequence. /// + /// + /// is null. + /// public static Task SumAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -851,6 +988,9 @@ public static Task SumAsync( /// A task that represents the asynchronous operation. /// The task result contains the sum of the values in the sequence. /// + /// + /// is null. + /// public static Task SumAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -880,6 +1020,9 @@ public static Task SumAsync( /// A task that represents the asynchronous operation. /// The task result contains the sum of the projected values.. /// + /// + /// or is null. + /// public static Task SumAsync( [NotNull] this IQueryable source, [NotNull] Expression> selector, @@ -911,6 +1054,9 @@ public static Task SumAsync( /// A task that represents the asynchronous operation. /// The task result contains the sum of the projected values.. /// + /// + /// or is null. + /// public static Task SumAsync( [NotNull] this IQueryable source, [NotNull] Expression> selector, @@ -940,6 +1086,9 @@ public static Task SumAsync( /// A task that represents the asynchronous operation. /// The task result contains the sum of the values in the sequence. /// + /// + /// is null. + /// public static Task SumAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -966,6 +1115,9 @@ public static Task SumAsync( /// A task that represents the asynchronous operation. /// The task result contains the sum of the values in the sequence. /// + /// + /// is null. + /// public static Task SumAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -994,6 +1146,9 @@ public static Task SumAsync( /// A task that represents the asynchronous operation. /// The task result contains the sum of the projected values.. /// + /// + /// or is null. + /// public static Task SumAsync( [NotNull] this IQueryable source, [NotNull] Expression> selector, @@ -1024,6 +1179,9 @@ public static Task SumAsync( /// A task that represents the asynchronous operation. /// The task result contains the sum of the projected values.. /// + /// + /// or is null. + /// public static Task SumAsync( [NotNull] this IQueryable source, [NotNull] Expression> selector, @@ -1053,6 +1211,9 @@ public static Task SumAsync( /// A task that represents the asynchronous operation. /// The task result contains the sum of the values in the sequence. /// + /// + /// is null. + /// public static Task SumAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -1079,6 +1240,9 @@ public static Task SumAsync( /// A task that represents the asynchronous operation. /// The task result contains the sum of the values in the sequence. /// + /// + /// is null. + /// public static Task SumAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -1107,6 +1271,9 @@ public static Task SumAsync( /// A task that represents the asynchronous operation. /// The task result contains the sum of the projected values.. /// + /// + /// or is null. + /// public static Task SumAsync( [NotNull] this IQueryable source, [NotNull] Expression> selector, @@ -1138,6 +1305,9 @@ public static Task SumAsync( /// A task that represents the asynchronous operation. /// The task result contains the sum of the projected values.. /// + /// + /// or is null. + /// public static Task SumAsync( [NotNull] this IQueryable source, [NotNull] Expression> selector, @@ -1167,6 +1337,9 @@ public static Task SumAsync( /// A task that represents the asynchronous operation. /// The task result contains the sum of the values in the sequence. /// + /// + /// is null. + /// public static Task SumAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -1193,6 +1366,9 @@ public static Task SumAsync( /// A task that represents the asynchronous operation. /// The task result contains the sum of the values in the sequence. /// + /// + /// is null. + /// public static Task SumAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -1221,6 +1397,9 @@ public static Task SumAsync( /// A task that represents the asynchronous operation. /// The task result contains the sum of the projected values.. /// + /// + /// or is null. + /// public static Task SumAsync( [NotNull] this IQueryable source, [NotNull] Expression> selector, @@ -1252,6 +1431,9 @@ public static Task SumAsync( /// A task that represents the asynchronous operation. /// The task result contains the sum of the projected values.. /// + /// + /// or is null. + /// public static Task SumAsync( [NotNull] this IQueryable source, [NotNull] Expression> selector, @@ -1281,6 +1463,9 @@ public static Task SumAsync( /// A task that represents the asynchronous operation. /// The task result contains the sum of the values in the sequence. /// + /// + /// is null. + /// public static Task SumAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -1307,6 +1492,9 @@ public static Task SumAsync( /// A task that represents the asynchronous operation. /// The task result contains the sum of the values in the sequence. /// + /// + /// is null. + /// public static Task SumAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -1335,6 +1523,9 @@ public static Task SumAsync( /// A task that represents the asynchronous operation. /// The task result contains the sum of the projected values.. /// + /// + /// or is null. + /// public static Task SumAsync( [NotNull] this IQueryable source, [NotNull] Expression> selector, @@ -1366,6 +1557,9 @@ public static Task SumAsync( /// A task that represents the asynchronous operation. /// The task result contains the sum of the projected values.. /// + /// + /// or is null. + /// public static Task SumAsync( [NotNull] this IQueryable source, [NotNull] Expression> selector, @@ -1399,6 +1593,12 @@ public static Task SumAsync( /// A task that represents the asynchronous operation. /// The task result contains the average of the sequence of values. /// + /// + /// is null. + /// + /// + /// contains no elements. + /// public static Task AverageAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -1426,6 +1626,9 @@ public static Task AverageAsync( /// A task that represents the asynchronous operation. /// The task result contains the average of the sequence of values. /// + /// + /// is null. + /// public static Task AverageAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -1456,6 +1659,12 @@ public static Task AverageAsync( /// A task that represents the asynchronous operation. /// The task result contains the average of the projected values. /// + /// + /// or is null. + /// + /// + /// contains no elements. + /// public static Task AverageAsync( [NotNull] this IQueryable source, [NotNull] Expression> selector, @@ -1488,6 +1697,9 @@ public static Task AverageAsync( /// A task that represents the asynchronous operation. /// The task result contains the average of the projected values. /// + /// + /// or is null. + /// public static Task AverageAsync( [NotNull] this IQueryable source, [NotNull] Expression> selector, @@ -1517,6 +1729,12 @@ public static Task AverageAsync( /// A task that represents the asynchronous operation. /// The task result contains the average of the sequence of values. /// + /// + /// is null. + /// + /// + /// contains no elements. + /// public static Task AverageAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -1543,6 +1761,9 @@ public static Task AverageAsync( /// A task that represents the asynchronous operation. /// The task result contains the average of the sequence of values. /// + /// + /// is null. + /// public static Task AverageAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -1572,6 +1793,12 @@ public static Task AverageAsync( /// A task that represents the asynchronous operation. /// The task result contains the average of the projected values. /// + /// + /// or is null. + /// + /// + /// contains no elements. + /// public static Task AverageAsync( [NotNull] this IQueryable source, [NotNull] Expression> selector, @@ -1604,6 +1831,9 @@ public static Task AverageAsync( /// A task that represents the asynchronous operation. /// The task result contains the average of the projected values. /// + /// + /// or is null. + /// public static Task AverageAsync( [NotNull] this IQueryable source, [NotNull] Expression> selector, @@ -1633,6 +1863,12 @@ public static Task AverageAsync( /// A task that represents the asynchronous operation. /// The task result contains the average of the sequence of values. /// + /// + /// is null. + /// + /// + /// contains no elements. + /// public static Task AverageAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -1659,6 +1895,9 @@ public static Task AverageAsync( /// A task that represents the asynchronous operation. /// The task result contains the average of the sequence of values. /// + /// + /// is null. + /// public static Task AverageAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -1688,6 +1927,12 @@ public static Task AverageAsync( /// A task that represents the asynchronous operation. /// The task result contains the average of the projected values. /// + /// + /// or is null. + /// + /// + /// contains no elements. + /// public static Task AverageAsync( [NotNull] this IQueryable source, [NotNull] Expression> selector, @@ -1720,6 +1965,9 @@ public static Task AverageAsync( /// A task that represents the asynchronous operation. /// The task result contains the average of the projected values. /// + /// + /// or is null. + /// public static Task AverageAsync( [NotNull] this IQueryable source, [NotNull] Expression> selector, @@ -1749,6 +1997,12 @@ public static Task AverageAsync( /// A task that represents the asynchronous operation. /// The task result contains the average of the sequence of values. /// + /// + /// is null. + /// + /// + /// contains no elements. + /// public static Task AverageAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -1776,6 +2030,9 @@ public static Task AverageAsync( /// A task that represents the asynchronous operation. /// The task result contains the average of the sequence of values. /// + /// + /// is null. + /// public static Task AverageAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -1806,6 +2063,12 @@ public static Task AverageAsync( /// A task that represents the asynchronous operation. /// The task result contains the average of the projected values. /// + /// + /// or is null. + /// + /// + /// contains no elements. + /// public static Task AverageAsync( [NotNull] this IQueryable source, [NotNull] Expression> selector, @@ -1838,6 +2101,9 @@ public static Task AverageAsync( /// A task that represents the asynchronous operation. /// The task result contains the average of the projected values. /// + /// + /// or is null. + /// public static Task AverageAsync( [NotNull] this IQueryable source, [NotNull] Expression> selector, @@ -1867,6 +2133,12 @@ public static Task AverageAsync( /// A task that represents the asynchronous operation. /// The task result contains the average of the sequence of values. /// + /// + /// is null. + /// + /// + /// contains no elements. + /// public static Task AverageAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -1893,6 +2165,9 @@ public static Task AverageAsync( /// A task that represents the asynchronous operation. /// The task result contains the average of the sequence of values. /// + /// + /// is null. + /// public static Task AverageAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -1923,6 +2198,12 @@ public static Task AverageAsync( /// A task that represents the asynchronous operation. /// The task result contains the average of the projected values. /// + /// + /// or is null. + /// + /// + /// contains no elements. + /// public static Task AverageAsync( [NotNull] this IQueryable source, [NotNull] Expression> selector, @@ -1955,6 +2236,9 @@ public static Task AverageAsync( /// A task that represents the asynchronous operation. /// The task result contains the average of the projected values. /// + /// + /// or is null. + /// public static Task AverageAsync( [NotNull] this IQueryable source, [NotNull] Expression> selector, @@ -1992,6 +2276,9 @@ public static Task AverageAsync( /// A task that represents the asynchronous operation. /// The task result contains true if the input sequence contains the specified value; otherwise, false. /// + /// + /// is null. + /// public static Task ContainsAsync( [NotNull] this IQueryable source, [NotNull] TSource item, @@ -2031,6 +2318,9 @@ public static Task ContainsAsync( /// A task that represents the asynchronous operation. /// The task result contains a that contains elements from the input sequence. /// + /// + /// is null. + /// public static async Task> ToListAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -2064,6 +2354,9 @@ public static async Task> ToListAsync( /// A task that represents the asynchronous operation. /// The task result contains an array that contains elements from the input sequence. /// + /// + /// is null. + /// public static async Task ToArrayAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) @@ -2134,6 +2427,9 @@ internal static readonly MethodInfo IncludeMethodInfo /// /// A new query with the related data included. /// + /// + /// or is null. + /// public static IIncludableQueryable Include( [NotNull] this IQueryable source, [NotNull] Expression> navigationPropertyPath) @@ -2363,6 +2659,12 @@ internal static readonly MethodInfo StringIncludeMethodInfo /// The source query. /// A string of '.' separated navigation property names to be included. /// A new query with the related data included. + /// + /// or is null. + /// + /// + /// is empty or whitespace. + /// public static IQueryable Include( [NotNull] this IQueryable source, [NotNull] [NotParameterized] string navigationPropertyPath) @@ -2399,6 +2701,9 @@ internal static readonly MethodInfo IgnoreQueryFiltersMethodInfo /// /// A new query that will not apply any model-level entity query filters. /// + /// + /// is null. + /// public static IQueryable IgnoreQueryFilters( [NotNull] this IQueryable source) where TEntity : class @@ -2444,6 +2749,9 @@ internal static readonly MethodInfo AsNoTrackingMethodInfo /// /// A new query where the result set will not be tracked by the context. /// + /// + /// is null. + /// public static IQueryable AsNoTracking( [NotNull] this IQueryable source) where TEntity : class @@ -2481,6 +2789,9 @@ internal static readonly MethodInfo AsTrackingMethodInfo /// /// A new query where the result set will be tracked by the context. /// + /// + /// is null. + /// public static IQueryable AsTracking( [NotNull] this IQueryable source) where TEntity : class @@ -2522,6 +2833,9 @@ source.Provider is EntityQueryProvider /// /// A new query where the result set will be tracked by the context. /// + /// + /// is null. + /// public static IQueryable AsTracking( [NotNull] this IQueryable source, QueryTrackingBehavior track) @@ -2552,6 +2866,9 @@ internal static readonly MethodInfo PerformIdentityResolutionMethodInfo /// /// A new query where the result set will not be tracked by the context. /// + /// + /// is null. + /// public static IQueryable PerformIdentityResolution( [NotNull] this IQueryable source) where TEntity : class @@ -2586,6 +2903,12 @@ internal static readonly MethodInfo TagWithMethodInfo /// /// A new query annotated with the given tag. /// + /// + /// or is null. + /// + /// + /// is empty or whitespace. + /// public static IQueryable TagWith( [NotNull] this IQueryable source, [NotNull] [NotParameterized] string tag) { @@ -2613,6 +2936,9 @@ source.Provider is EntityQueryProvider /// and then throwing away the list (without the overhead of actually creating the list). /// /// The source query. + /// + /// is null. + /// public static void Load([NotNull] this IQueryable source) { Check.NotNull(source, nameof(source)); @@ -2633,6 +2959,9 @@ public static void Load([NotNull] this IQueryable source) /// A to observe while waiting for the task to complete. /// /// A task that represents the asynchronous operation. + /// + /// is null. + /// public static async Task LoadAsync( [NotNull] this IQueryable source, CancellationToken cancellationToken = default) { @@ -2676,6 +3005,9 @@ public static async Task LoadAsync( /// A task that represents the asynchronous operation. /// The task result contains a that contains selected keys and values. /// + /// + /// or is null. + /// public static Task> ToDictionaryAsync( [NotNull] this IQueryable source, [NotNull] Func keySelector, @@ -2711,6 +3043,9 @@ public static Task> ToDictionaryAsync( /// A task that represents the asynchronous operation. /// The task result contains a that contains selected keys and values. /// + /// + /// or is null. + /// public static Task> ToDictionaryAsync( [NotNull] this IQueryable source, [NotNull] Func keySelector, @@ -2749,6 +3084,9 @@ public static Task> ToDictionaryAsync( /// The task result contains a that contains values of type /// selected from the input sequence. /// + /// + /// or or is null. + /// public static Task> ToDictionaryAsync( [NotNull] this IQueryable source, [NotNull] Func keySelector, @@ -2790,6 +3128,9 @@ public static Task> ToDictionaryAsync that contains values of type /// selected from the input sequence. /// + /// + /// or or is null. + /// public static async Task> ToDictionaryAsync( [NotNull] this IQueryable source, [NotNull] Func keySelector, @@ -2832,6 +3173,9 @@ public static async Task> ToDictionaryAsync to observe while waiting for the task to complete. /// /// A task that represents the asynchronous operation. + /// + /// or is null. + /// public static async Task ForEachAsync( [NotNull] this IQueryable source, [NotNull] Action action, @@ -2863,6 +3207,12 @@ public static async Task ForEachAsync( /// An to enumerate. /// /// The query results. + /// + /// is null. + /// + /// + /// is not a . + /// public static IAsyncEnumerable AsAsyncEnumerable( [NotNull] this IQueryable source) {