Exemple #1
0
        public Expression <Func <T, bool> > ResolveFilter <T>(EntityMetadataService <T> metadataService)
        {
            var leftExpression  = this.Left.ResolveFilter(metadataService);
            var rightExpression = this.Right.ResolveFilter(metadataService);

            return(leftExpression.Combine(rightExpression, this.Combinor));
        }
Exemple #2
0
        static void Main(string[] args)
        {
            var test = new TestData {
                Length = 3, Name = "Win", Ethnicity = "Human"
            };
            var test1 = new TestData {
                Length = 4, Name = "Lose", Ethnicity = "Human"
            };
            var test2 = new TestData {
                Length = 5, Name = "Test", Ethnicity = "Human"
            };
            var test3 = new TestData {
                Length = 6, Name = "Foo", Ethnicity = "Human"
            };

            var filterableData = new List <TestData> {
                test, test1, test2, test3
            };

            var simpleFilter = new FilterParameterDTO
            {
                PropertyName    = nameof(TestData.Name),
                FilterCondition = FilterCondition.Equal,
                Value           = "Win"
            };

            var entityMetadataService = new EntityMetadataService <TestData>(testDataWhiteList);
            var expressionFilter      = simpleFilter.ResolveFilter(entityMetadataService);

            var results = filterableData.AsQueryable().Where(expressionFilter).ToList();

            Console.WriteLine($"Number of Results {results.Count}");
            Console.WriteLine($"Is Expected Result: { results.First().Equals(test)}");

            var simpleFilter2 = new FilterParameterDTO
            {
                PropertyName    = nameof(TestData.Length),
                FilterCondition = FilterCondition.Equal,
                Value           = "6"
            };

            var binaryExpression = new BinaryExpressionDTO {
                Left = simpleFilter, Right = simpleFilter2, Combinor = ExpressionCombine.Or
            };

            var binaryExpressionFilter = binaryExpression.ResolveFilter(entityMetadataService);

            results = filterableData.AsQueryable().Where(binaryExpressionFilter).ToList();
            Console.WriteLine($"Number of Results {results.Count}");
            Console.WriteLine($"Is Expected First Result { results.First().Equals(test)}");
            Console.WriteLine($"Is Expected Second Result { results.Skip(1).First().Equals(test3)}");

            Console.ReadLine();
        }
Exemple #3
0
        public Expression <Func <T, bool> > ResolveFilter <T>(EntityMetadataService <T> metadataService)
        {
            var memberExpression = metadataService.GetMemberExpression(this.PropertyName);

            return(memberExpression.BuildBinaryExpression <T>(this.FilterCondition, this.Value));
        }