public string BuildCriteriaCondition(FilterOperator op, FilterDBType format, string value) { string criteria = string.Empty; switch (format) { case FilterDBType.Literal: case FilterDBType.Guid: case FilterDBType.String: default: return(BuildCriteriaConditionString(op, value)); case FilterDBType.DateTime: return(BuildCriteriaConditionDatetime(op, value)); } }
private static string GetFilterLinq(string searchingName, FilterOperator searchingOperator, string searchingValue, FilterDBType format) { if (string.IsNullOrEmpty(searchingValue)) { return(string.Empty); } string searchingOperatorString = String.Empty; if (format == FilterDBType.DateTime) { var valueDate = DateTime.ParseExact(searchingValue, "yyyy-MM-ddTHH:mm:ss.fffZ", null); var valueDateTime = valueDate.TimeOfDay; var dayBegin = valueDate.AddHours(-valueDateTime.Hours).AddMinutes(-valueDateTime.Minutes).AddSeconds(-valueDateTime.Seconds).AddMilliseconds(-valueDateTime.Milliseconds); var nextDayBegin = dayBegin.AddDays(1); switch (searchingOperator) { case FilterOperator.Eq: // == return(String.Format("({0} {1} \"{2:MM/dd/yyyy}\" && {3} {4} \"{5:MM/dd/yyyy}\")", searchingName, ">=", dayBegin, searchingName, "<", nextDayBegin)); case FilterOperator.Ne: // != return(String.Format("({0} {1} \"{2:MM/dd/yyyy}\" && {3} {4} \"{5:MM/dd/yyyy}\")", searchingName, "<", dayBegin, searchingName, ">=", nextDayBegin)); case FilterOperator.Lt: // < return(String.Format("{0} {1} \"{2:MM/dd/yyyy}\"", searchingName, "<", dayBegin)); case FilterOperator.Le: // <= return(String.Format("{0} {1} \"{2:MM/dd/yyyy}\"", searchingName, "<=", dayBegin)); case FilterOperator.Gt: // > return(String.Format("{0} {1} \"{2:MM/dd/yyyy}\"", searchingName, ">", nextDayBegin)); case FilterOperator.Ge: // >= return(String.Format("{0} {1} \"{2:MM/dd/yyyy}\"", searchingName, ">=", dayBegin)); case FilterOperator.Nu: return(String.Format("{0} is null", searchingName)); case FilterOperator.Nn: return(String.Format("{0} is not null", searchingName)); default: return(String.Format("{0} {1} \"{2:MM/dd/yyyy}\"", searchingName, "=", valueDate)); } } else { //FORMAT DATA. DEPENDING ON TYPE OF DATA if ((searchingOperator == FilterOperator.Eq || searchingOperator == FilterOperator.Ne) && format == FilterDBType.String) { searchingValue = string.Format("\"{0}\"", searchingValue); } //FORMAT DATA. DEPENDING ON TYPE OF DATA if (format == FilterDBType.Guid) { var incomingIds = searchingValue.Split(','); searchingValue = String.Join(",", incomingIds.Select(x => "\"" + Guid.Parse(x).ToString() + "\"")); } switch (searchingOperator) { case FilterOperator.Eq: return(String.Format("{0} {1} {2}", searchingName, "=", searchingValue)); case FilterOperator.Ne: return(String.Format("{0} {1} {2}", searchingName, "!=", searchingValue)); //case FilterOperator.EqText: return String.Format("{0} {1} \"{2}\"", searchingName, "=", searchingValue); //case FilterOperator.NeText: return String.Format("{0} {1} \"{2}\"", searchingName, "!=", searchingValue); case FilterOperator.Lt: return(String.Format("{0} {1} {2}", searchingName, "<", searchingValue)); case FilterOperator.Le: return(String.Format("{0} {1} {2}", searchingName, "<=", searchingValue)); case FilterOperator.Gt: return(String.Format("{0} {1} {2}", searchingName, ">", searchingValue)); case FilterOperator.Ge: return(String.Format("{0} {1} {2}", searchingName, ">=", searchingValue)); case FilterOperator.Bw: return(String.Format("{0}.StartsWith(\"{1}\")", searchingName, searchingValue)); case FilterOperator.Bn: return(String.Format("!{0}.StartsWith(\"{1}\")", searchingName, searchingValue)); case FilterOperator.Ew: return(String.Format("{0}.EndsWith(\"{1}\")", searchingName, searchingValue)); case FilterOperator.En: return(String.Format("!{0}.EndsWith(\"{1}\")", searchingName, searchingValue)); case FilterOperator.Cn: return(String.Format("{0}.Contains(\"{1}\")", searchingName, searchingValue)); case FilterOperator.Nc: return(String.Format("!{0}.Contains(\"{1}\")", searchingName, searchingValue)); //case FilterOperator.EqualOrNotEqual: return String.Format("!{0}.Contains(\"{1}\")", searchingName, searchingValue); case FilterOperator.In: return(String.Format("({0} {1} ({2}))", searchingName, "in", searchingValue)); case FilterOperator.Ni: return(String.Format("({0} {1} ({2}))", searchingName, "not in", searchingValue)); case FilterOperator.Nu: return(String.Format("({0} is null)", searchingName)); case FilterOperator.Nn: return(String.Format("({0} is not null)", searchingName)); //case FilterOperator.TextOperators: return String.Format("!{0}.Contains(\"{1}\")", searchingName, searchingValue); //case FilterOperator.NoTextOperators: return String.Format("!{0}.Contains(\"{1}\")", searchingName, searchingValue); //case FilterOperator.NullOperators: return String.Format("!{0}.Contains(\"{1}\")", searchingName, searchingValue); default: return(String.Format("{0} {1} \"{2}\"", searchingName, "=", searchingValue)); } } }