コード例 #1
0
        public static IQueryable <TEntity> ContainsSearchWithAnd <TEntity>(this IQueryable <TEntity> source,
                                                                           Expression <Func <TEntity, object> > expression, string searchTerm) where TEntity : class
        {
            var s = FreeTextSearchImp(source, expression, FullTextPrefixes.ContainsWithAnd(searchTerm));

            return(s);
        }
コード例 #2
0
        private static Expression CreateValueExpression(Type targetType, object value, FilterOperator filterOperator, CultureInfo culture)//edited by moravej
        {
            if (((targetType != typeof(string)) && (!targetType.IsValueType || targetType.IsNullableType())) &&
                (string.Compare(value as string, "null", StringComparison.OrdinalIgnoreCase) == 0))
            {
                value = null;
            }
            if (value != null)
            {
                Type nonNullableTargetType = targetType.GetNonNullableType();
                var  valueType             = value.GetType();                                         //added by moravej

                if (valueType == typeof(string) && filterOperator == FilterOperator.SemanticContains) //Added by moravej
                {
                    value = FullTextPrefixes.Contains(value.ToString(), true);
                }

                if (valueType != nonNullableTargetType)
                {
                    if (nonNullableTargetType.IsEnum)
                    {
                        if (valueType.IsArray)//by moravej
                        {
                            value = CreateArrayValue(targetType, nonNullableTargetType, value, true, false, null);
                        }
                        else
                        {
                            value = Enum.Parse(nonNullableTargetType, value.ToString(), true);
                        }
                    }
                    else if (value is IConvertible || (valueType.IsArray && valueType.GetElementType().IsAssignableFrom(typeof(IConvertible))))
                    {
                        if (valueType.IsArray)//by moravej
                        {
                            value = CreateArrayValue(targetType, nonNullableTargetType, value, false, true, culture);
                        }
                        else
                        {
                            value = Convert.ChangeType(value, nonNullableTargetType, culture);
                        }
                    }
                }
            }

            return(CreateConstantExpression(value));
        }
コード例 #3
0
 /// <summary>
 ///
 /// </summary>
 /// <typeparam name="TEntity"></typeparam>
 /// <param name="source"></param>
 /// <param name="expression"></param>
 /// <param name="searchTerm"></param>
 /// <returns></returns>
 public static IQueryable <TEntity> FreeTextSearch <TEntity>(this IQueryable <TEntity> source,
                                                             Expression <Func <TEntity, object> > expression, string searchTerm) where TEntity : class
 {
     return(FreeTextSearchImp(source, expression, FullTextPrefixes.Freetext(searchTerm)));
 }