internal static MethodDeclarationSyntax EqualsFilterExtensionMethod( ParameterSyntax collectionParameter, PropertyInfo modelProperty) { var filterParameterName = modelProperty.Name.ToCamelCase(); var filterParameterType = modelProperty.TypeInfo.IsString() ? modelProperty.TypeSyntax : NullableType(modelProperty.TypeSyntax); var filterParameter = BaseSyntaxGenerator.Parameter(filterParameterType, filterParameterName); var collectionName = collectionParameter.Identifier.Text; var condition = modelProperty.TypeInfo.IsString() ? StringNotEmptyCheckExpression(filterParameterName) : NullableHasValueCheckExpression(filterParameterName); var filterExpression = LinqWhereExpression( collectionName, LambdaGenerator.EqualsPredicate(collectionName.Substring(0, 1), modelProperty.Name, filterParameterName)); var methodBody = FilterExtensionMethodBody(condition, filterExpression, IdentifierName(collectionName)); return(FilterExtensionMethod( modelProperty.Name, collectionParameter, filterParameter, methodBody)); }
internal static MethodDeclarationSyntax StringContainsFilterExtensionMethod( ParameterSyntax collectionParameter, PropertyInfo modelProperty) { var filterParameterName = modelProperty.Name.ToCamelCase(); var filterParameter = BaseSyntaxGenerator.Parameter(modelProperty.TypeSyntax, filterParameterName); var collectionName = collectionParameter.Identifier.Text; var condition = StringNotEmptyCheckExpression(filterParameterName); var filterExpression = LinqWhereExpression( collectionName, LambdaGenerator.ContainsPredicate(collectionName.Substring(0, 1), modelProperty.Name, filterParameterName)); var methodBody = FilterExtensionMethodBody(condition, filterExpression, IdentifierName(collectionName)); return(FilterExtensionMethod( modelProperty.Name, collectionParameter, filterParameter, methodBody)); }
internal static MethodDeclarationSyntax RangeToFilterExtensionMethod( ParameterSyntax collectionParameter, PropertyInfo modelProperty) { var filterParameterName = modelProperty.Name.ToCamelCase() + "To"; var filterToParameter = BaseSyntaxGenerator.Parameter(NullableType(modelProperty.TypeSyntax), filterParameterName); var collectionName = collectionParameter.Identifier.Text; var condition = NullableHasValueCheckExpression(filterParameterName); var filterExpression = LinqWhereExpression( collectionName, LambdaGenerator.LessOrEqualPredicate(collectionName.Substring(0, 1), modelProperty.Name, filterParameterName)); var methodBody = FilterExtensionMethodBody(condition, filterExpression, IdentifierName(collectionName)); return(FilterExtensionMethod( modelProperty.Name + "To", collectionParameter, filterToParameter, methodBody)); }