private static RangeQueryBase BuildRangeQuery(string fieldName, Dictionary<string, object> fieldDict) { object value = fieldDict.First(x => x.Key != QuerySerializer._BOOST).Value; RangeQueryBase query = null; if (value is Int32 || value is Int64) { query = new IntegerRangeQuery(fieldName, fieldDict.GetInt64OrNull(_GREATER_THAN), fieldDict.GetInt64OrNull(_LESS_THAN), fieldDict.GetInt64OrNull(_GREATER_THAN_OR_EQUAL_TO), fieldDict.GetInt64OrNull(_LESS_THAN_OR_EQUAL_TO)); } else if (value is Double || value is float) { query = new DoubleRangeQuery(fieldName, fieldDict.GetDoubleOrNull(_GREATER_THAN), fieldDict.GetDoubleOrNull(_LESS_THAN), fieldDict.GetDoubleOrNull(_GREATER_THAN_OR_EQUAL_TO), fieldDict.GetDoubleOrNull(_LESS_THAN_OR_EQUAL_TO)); } else { try { DateTime.Parse(value.ToString()); query = new DateTimeRangeQuery(fieldName, fieldDict.GetDateTimeOrNull(_GREATER_THAN), fieldDict.GetDateTimeOrNull(_LESS_THAN), fieldDict.GetDateTimeOrNull(_GREATER_THAN_OR_EQUAL_TO), fieldDict.GetDateTimeOrNull(_LESS_THAN_OR_EQUAL_TO)); } catch { query = new StringRangeQuery(fieldName, fieldDict.GetStringOrDefault(_GREATER_THAN), fieldDict.GetStringOrDefault(_LESS_THAN), fieldDict.GetStringOrDefault(_GREATER_THAN_OR_EQUAL_TO), fieldDict.GetStringOrDefault(_LESS_THAN_OR_EQUAL_TO)); } } query.QueryName = fieldDict.GetStringOrDefault(QuerySerializer._QUERY_NAME); return query; }
private static RangeFilterBase BuildRangeFilter(string fieldName, Dictionary<string, object> fieldDict) { object value = fieldDict.First().Value; if (value is Int32 || value is Int64) { return new IntegerRangeFilter(fieldName, fieldDict.GetInt64OrNull(_GREATER_THAN), fieldDict.GetInt64OrNull(_LESS_THAN), fieldDict.GetInt64OrNull(_GREATER_THAN_OR_EQUAL_TO), fieldDict.GetInt64OrNull(_LESS_THAN_OR_EQUAL_TO)); } if (value is Double || value is float) { return new DoubleRangeFilter(fieldName, fieldDict.GetDoubleOrNull(_GREATER_THAN), fieldDict.GetDoubleOrNull(_LESS_THAN), fieldDict.GetDoubleOrNull(_GREATER_THAN_OR_EQUAL_TO), fieldDict.GetDoubleOrNull(_LESS_THAN_OR_EQUAL_TO)); } try { DateTime.Parse(value.ToString()); return new DateTimeRangeFilter(fieldName, fieldDict.GetDateTimeOrNull(_GREATER_THAN), fieldDict.GetDateTimeOrNull(_LESS_THAN), fieldDict.GetDateTimeOrNull(_GREATER_THAN_OR_EQUAL_TO), fieldDict.GetDateTimeOrNull(_LESS_THAN_OR_EQUAL_TO)); } catch { return new StringRangeFilter(fieldName, fieldDict.GetStringOrDefault(_GREATER_THAN), fieldDict.GetStringOrDefault(_LESS_THAN), fieldDict.GetStringOrDefault(_GREATER_THAN_OR_EQUAL_TO), fieldDict.GetStringOrDefault(_LESS_THAN_OR_EQUAL_TO)); } }