/// <summary>
        /// Retrieves items where any of the defined properties
        /// are equal to any of the supplied <paramref name="values">value</paramref>
        /// </summary>
        /// <param name="values">A collection of values to match upon</param>
        public EnumerableChildStringSearch <TParent, TChild> EqualTo(params string[] values)
        {
            var equalToExpression = EnumerableEqualsExpressionBuilder.Build(this.Properties, values, this._searchOptions);

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

            BuildExpression(fullExpression);
            return(this);
        }
        public EnumerableStringSearch <T> IsEqual(params string[] terms)
        {
            var fullExpression = EnumerableEqualsExpressionBuilder.Build(this.Properties, terms, _searchOptions);

            this.BuildExpression(fullExpression);
            return(this);
        }
        /// <summary>
        /// Retrieve items where any of the defined properties
        /// are equal to any of the defined properties to search for
        /// </summary>
        /// <param name="propertiesToSearchFor">Properties to search for</param>
        public EnumerableStringSearch <T> EqualTo(params Expression <Func <T, string> >[] propertiesToSearchFor)
        {
            propertiesToSearchFor = propertiesToSearchFor.Select(AlignParameter).ToArray();
            Expression completeExpression = EnumerableEqualsExpressionBuilder.Build(Properties, propertiesToSearchFor, _searchOptions);

            BuildExpression(completeExpression);
            return(this);
        }
Example #5
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);
        }