/// <summary>
        /// Retrieve items where any of the defined properties starts
        /// with any of the defined search terms
        /// </summary>
        /// <param name="terms">Term or terms to search for</param>
        public EnumerableChildStringSearch <TParent, TChild> EndsWith(params string[] terms)
        {
            Expression endsWithExpression = EnumerableEndsWithExpressionBuilder.Build(this.Properties, terms, _searchOptions);

            this.AppendExpression(endsWithExpression);
            return(this);
        }
        /// <summary>
        /// Retrieve items where any of the defined properties
        /// ends with any of the defined search terms
        /// </summary>
        /// <param name="terms">Term or terms to search for</param>
        public EnumerableStringSearch <T> EndsWith(params string[] terms)
        {
            Expression fullExpression = EnumerableEndsWithExpressionBuilder.Build(this.Properties, terms, _searchOptions);

            this.BuildExpression(fullExpression);
            return(this);
        }
        /// <summary>
        /// Retrieve items where any of the defined properties
        /// ends with any of the defined search terms
        /// </summary>
        /// <param name="propertiesToSearchFor">Properties containing terms to search for</param>
        public EnumerableStringSearch <T> EndsWith(params Expression <Func <T, string> >[] propertiesToSearchFor)
        {
            var        propertiesToSearch = propertiesToSearchFor.Select(AlignParameter).ToArray();
            Expression finalExpression    = EnumerableEndsWithExpressionBuilder.Build(Properties, propertiesToSearch, _searchOptions);

            BuildExpression(finalExpression);
            return(this);
        }
Exemplo n.º 4
0
        public static Expression Build <T>(Expression <Func <T, string> >[] properties, string[] searchTerms, SearchOptions searchOptions)
        {
            Expression completeExpression       = null;
            var        comparisonTypeExpression = Expression.Constant(searchOptions.ComparisonType);

            foreach (var stringProperty in properties)
            {
                var containsExpression = Build(stringProperty, searchTerms, comparisonTypeExpression, searchOptions.SearchType);
                completeExpression = ExpressionHelper.JoinOrExpression(completeExpression, containsExpression);
            }

            if (searchOptions.SearchType == SearchType.WholeWords)
            {
                var startsWithExpression = EnumerableStartsWithExpressionBuilder.Build(properties, searchTerms, searchOptions);
                completeExpression = ExpressionHelper.JoinOrExpression(completeExpression, startsWithExpression);

                var endsWithExpression = EnumerableEndsWithExpressionBuilder.Build(properties, searchTerms, searchOptions);
                completeExpression = ExpressionHelper.JoinOrExpression(completeExpression, endsWithExpression);

                var equalsExpression = EnumerableEqualsExpressionBuilder.Build(properties, searchTerms, searchOptions);
                completeExpression = ExpressionHelper.JoinOrExpression(completeExpression, equalsExpression);
            }
            return(completeExpression);
        }