DynamicServices.Filters.QueryBuilder.GetQueryFrom C# (CSharp) Method

GetQueryFrom() public method

public GetQueryFrom ( Type genericType, string propertyName ) : object
genericType System.Type
propertyName string
return object
        public object GetQueryFrom(Type genericType, string propertyName)
        {
            Utilities.AssertPropertyExists(genericType, propertyName);

            var input = Expression.Parameter(genericType, "input");
            var property = Expression.Property(input, propertyName);
            var cTrue = Expression.Constant(true, typeof(bool));
            var isTrue = Expression.Equal(property, cTrue);

            var funcType = typeof(Func<,>).MakeGenericType(new[] { genericType, typeof(bool) });
            var lambdaFactory = typeof(Expression).GetMethod("Lambda", new[] { typeof(Expression), typeof(IEnumerable<ParameterExpression>) }).MakeGenericMethod(funcType);
            var lambda = lambdaFactory.Invoke(null, new object[] { isTrue, new[] { input } });

            // We've just built:
            //var lambda = Expression.Lambda<Func<[genericType], bool>>(isTrue, new ParameterExpression[] { input });
            return lambda;
        }