private static object GetExpressionValue( FilterDescriptor filterDescriptor, Function <FilterDescriptor, object> formatValue) { object obj1 = filterDescriptor.Value; if (!(obj1 is string) && obj1 is IEnumerable) { IEnumerable enumerable = obj1 as IEnumerable; List <object> objectList = new List <object>(); foreach (object obj2 in enumerable) { FilterDescriptor filterDescriptor1 = filterDescriptor.Clone() as FilterDescriptor; filterDescriptor1.Value = obj2; object expressionValue = FilterDescriptor.GetExpressionValue(filterDescriptor1, formatValue); objectList.Add(expressionValue); } return((object)objectList.ToArray()); } object obj3 = formatValue != null?formatValue(filterDescriptor) : filterDescriptor.Value; object obj4; if (obj3 is string || obj3 is char || (obj3 is Guid || obj3 is TimeSpan)) { obj4 = (object)("'" + DataStorageHelper.EscapeValue(Convert.ToString(obj3)) + "'"); } else if (obj3 is Enum) { obj4 = (object)Convert.ToInt32(obj3); } else if (obj3 is DateTime) { obj4 = (object)string.Format((IFormatProvider)CultureInfo.InvariantCulture, "#{0}#", obj3); } else { obj4 = !(obj3 is double) ? (!(obj3 is Color) ? (obj3 is short || obj3 is int || (obj3 is long || obj3 is Decimal) || (obj3 is float || obj3 is double || obj3 is bool) ? (object)Convert.ToString(filterDescriptor.Value, (IFormatProvider)CultureInfo.InvariantCulture) : (object)("'" + DataStorageHelper.EscapeValue(Convert.ToString(filterDescriptor.Value, (IFormatProvider)CultureInfo.InvariantCulture)) + "'")) : (object)((Color)obj3).ToArgb()) : (object)((double)obj3).ToString("G17", (IFormatProvider)CultureInfo.InvariantCulture); } return(obj4); }
public static string GetExpression( FilterDescriptor filterDescriptor, Function <FilterDescriptor, object> formatValue) { if (string.IsNullOrEmpty(filterDescriptor.PropertyName) || filterDescriptor.filterOperator == FilterOperator.None || filterDescriptor.Operator != FilterOperator.IsNotNull && filterDescriptor.Operator != FilterOperator.IsNull && (filterDescriptor.Operator != FilterOperator.IsEqualTo && filterDescriptor.Operator != FilterOperator.IsNotEqualTo) && filterDescriptor.value == null) { return(string.Empty); } FilterOperator filterOperator = filterDescriptor.Operator; object obj = FilterDescriptor.GetExpressionValue(filterDescriptor, formatValue); if (filterDescriptor.value == null || filterDescriptor.value == DBNull.Value) { if (filterOperator == FilterOperator.IsEqualTo) { filterOperator = FilterOperator.IsNull; } if (filterOperator == FilterOperator.IsNotEqualTo) { filterOperator = FilterOperator.IsNotNull; } } if (filterOperator == FilterOperator.IsContainedIn || filterOperator == FilterOperator.IsNotContainedIn) { IEnumerable enumebrable = obj as IEnumerable; if (enumebrable != null && obj is string) { enumebrable = (IEnumerable)obj.ToString().Trim('\'').Split(new char[2] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries); obj = (object)DataStorageHelper.ParseEnumerbale(enumebrable); } if (!(obj is string) && enumebrable != null) { obj = (object)DataStorageHelper.ParseEnumerbale(enumebrable); } } string empty = string.Empty; string str1 = DataStorageHelper.EscapeName(filterDescriptor.PropertyName); switch (filterOperator) { case FilterOperator.IsLike: return(string.Format("{0} LIKE {1}", (object)str1, obj)); case FilterOperator.IsNotLike: return(string.Format("{0} NOT LIKE {1}", (object)str1, obj)); case FilterOperator.IsLessThan: return(string.Format("{0} < {1}", (object)str1, obj)); case FilterOperator.IsLessThanOrEqualTo: return(string.Format("{0} <= {1}", (object)str1, obj)); case FilterOperator.IsEqualTo: return(string.Format("{0} = {1}", (object)str1, obj)); case FilterOperator.IsNotEqualTo: return(string.Format("{0} <> {1}", (object)str1, obj)); case FilterOperator.IsGreaterThanOrEqualTo: return(string.Format("{0} >= {1}", (object)str1, obj)); case FilterOperator.IsGreaterThan: return(string.Format("{0} > {1}", (object)str1, obj)); case FilterOperator.StartsWith: string str2 = DataStorageHelper.EscapeLikeValue(Convert.ToString(filterDescriptor.Value, (IFormatProvider)CultureInfo.InvariantCulture)); return(string.Format("{0} LIKE '{1}%'", (object)str1, (object)str2)); case FilterOperator.EndsWith: string str3 = DataStorageHelper.EscapeLikeValue(Convert.ToString(filterDescriptor.Value, (IFormatProvider)CultureInfo.InvariantCulture)); return(string.Format("{0} LIKE '%{1}'", (object)str1, (object)str3)); case FilterOperator.Contains: string str4 = DataStorageHelper.EscapeLikeValue(Convert.ToString(filterDescriptor.Value, (IFormatProvider)CultureInfo.InvariantCulture)); return(string.Format("{0} LIKE '%{1}%'", (object)str1, (object)str4)); case FilterOperator.NotContains: string str5 = DataStorageHelper.EscapeLikeValue(Convert.ToString(filterDescriptor.Value, (IFormatProvider)CultureInfo.InvariantCulture)); return(string.Format("{0} NOT LIKE '%{1}%'", (object)str1, (object)str5)); case FilterOperator.IsNull: return(string.Format("{0} IS NULL", (object)str1)); case FilterOperator.IsNotNull: return(string.Format("NOT ({0} IS NULL)", (object)str1)); case FilterOperator.IsContainedIn: return(string.Format("{0} IN ({1})", (object)str1, obj)); case FilterOperator.IsNotContainedIn: return(string.Format("{0} NOT IN ({1})", (object)str1, obj)); default: return(string.Empty); } }