コード例 #1
0
        public static Expression <Func <T, bool> > CreateFilterExpression <T>(FilterDefinition filterdata)
        {
            if (filterdata == null)
            {
                return(null);
            }
            var metadata = FilterMetadataExtractor.ExtractMetadata <T>();

            DoValidationProcess(filterdata, metadata);
            var spec = CreateExpression <T>(filterdata, metadata);

            return(spec.ToExpression());
        }
        public void Test_FilterMetadataExtractor()
        {
            var searchMetadata = FilterMetadataExtractor.ExtractMetadata <Person>();

            Assert.IsNotNull(searchMetadata);
            Assert.AreEqual(searchMetadata.TypeName, typeof(Person).FullName);
            Assert.AreEqual(searchMetadata.Items.Count, 2);
            Assert.AreEqual(searchMetadata.Items[0].FieldName, "Name");
            Assert.AreEqual(searchMetadata.Items[0].Type, TypeCode.String);
            Assert.AreEqual(searchMetadata.Items[0].Title, "Person name");

            Assert.AreEqual(searchMetadata.Items[1].FieldName, "Birthdate");
            Assert.AreEqual(searchMetadata.Items[1].Type, TypeCode.DateTime);
            Assert.AreEqual(searchMetadata.Items[1].Title, "Birth date");
        }