コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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));
        }