コード例 #1
0
        /// <summary>
        /// Build a 'contains' expression for a searching a property that
        /// contains the value of another string property
        /// </summary>
        public static Expression Build <T>(Expression <Func <T, string> > propertyToSearch, Expression <Func <T, string> > propertyToSearchFor)
        {
            var isNotNullExpression          = ExpressionHelper.BuildNotNullExpression(propertyToSearch);
            var searchForIsNotNullExpression = ExpressionHelper.BuildNotNullExpression(propertyToSearchFor);
            var containsExpression           = Expression.Call(propertyToSearch.Body, ExpressionMethods.StringContainsMethod, propertyToSearchFor.Body);
            var fullNotNullExpression        = Expression.AndAlso(isNotNullExpression, searchForIsNotNullExpression);

            return(Expression.AndAlso(fullNotNullExpression, containsExpression));
        }
コード例 #2
0
        /// <summary>
        /// Build an 'EndsWith' expression for a string property against a property
        /// </summary>
        private static Expression Build <T>(Expression <Func <T, string> > stringProperty, Expression <Func <T, string> > propertyToSearchFor, SearchOptions searchOptions)
        {
            var        endsWithExpresion = Expression.Call(stringProperty.Body, ExpressionMethods.EndsWithMethodWithComparison, propertyToSearchFor.Body, searchOptions.ComparisonTypeExpression);
            Expression finalExpression   = null;

            if (searchOptions.NullCheck)
            {
                var notNullProperty  = ExpressionHelper.BuildNotNullExpression(stringProperty);
                var notNullSearchFor = ExpressionHelper.BuildNotNullExpression(propertyToSearchFor);
                finalExpression = ExpressionHelper.JoinAndAlsoExpression(notNullProperty, notNullSearchFor);
            }
            finalExpression = ExpressionHelper.JoinAndAlsoExpression(finalExpression, endsWithExpresion);
            return(Expression.IsTrue(finalExpression));
        }