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); }
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)); }
/// <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))); }