<PackageReference Include="System.Reactive" Version="6.0.2" />

ObservableQueryProvider

using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Linq.Expressions; using System.Reactive.Linq; using System.Reflection; using System.Runtime.CompilerServices; namespace System.Reactive { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] [RequiresUnreferencedCode("This type uses Queryable.AsQueryable, which is not compatible with trimming because expressions referencing IQueryable extension methods can get rebound to IEnumerable extension methods, and those IEnumerable methods might be trimmed.")] internal class ObservableQueryProvider : IQbservableProvider, IQueryProvider { [System.Runtime.CompilerServices.Nullable(2)] private static MethodInfo _staticAsQueryable; private static MethodInfo AsQueryable => _staticAsQueryable ?? (_staticAsQueryable = Qbservable.InfoOf((Expression<Func<object>>)(() => ((IEnumerable<object>)null).AsQueryable())).GetGenericMethodDefinition()); public IQbservable<TResult> CreateQuery<[System.Runtime.CompilerServices.Nullable(2)] TResult>(Expression expression) { if (expression == null) throw new ArgumentNullException("expression"); if (!typeof(IObservable<TResult>).IsAssignableFrom(expression.Type)) throw new ArgumentException(Strings_Providers.INVALID_TREE_TYPE, "expression"); return new ObservableQuery<TResult>(expression); } IQueryable<TElement> IQueryProvider.CreateQuery<[System.Runtime.CompilerServices.Nullable(2)] TElement>(Expression expression) { MethodCallExpression methodCallExpression = expression as MethodCallExpression; if (methodCallExpression == null || methodCallExpression.Method.DeclaringType != typeof(Qbservable) || methodCallExpression.Method.Name != "ToQueryable") throw new ArgumentException(Strings_Providers.EXPECTED_TOQUERYABLE_METHODCALL, "expression"); Expression arg = methodCallExpression.Arguments[0]; return Expression.Lambda<Func<IQueryable<TElement>>>(Expression.Call(AsQueryable.MakeGenericMethod(typeof(TElement)), Expression.Call(typeof(Observable).GetMethod("ToEnumerable").MakeGenericMethod(typeof(TElement)), arg)), Array.Empty<ParameterExpression>()).Compile()(); } IQueryable IQueryProvider.CreateQuery(Expression expression) { throw new NotImplementedException(); } TResult IQueryProvider.Execute<[System.Runtime.CompilerServices.Nullable(2)] TResult>(Expression expression) { throw new NotImplementedException(); } object IQueryProvider.Execute(Expression expression) { throw new NotImplementedException(); } } }