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"); }