public void WhereIn(string fieldName, IEnumerable <object> values) { AppendSpaceIfNeeded(queryText.Length > 0 && char.IsWhiteSpace(queryText[queryText.Length - 1]) == false); NegateIfNeeded(); var whereParams = new WhereParams { FieldName = fieldName }; fieldName = EnsureValidFieldName(whereParams); var list = UnpackEnumerable(values).ToList(); if (list.Count == 0) { queryText.Append("@emptyIn<") .Append(RavenQuery.EscapeField(fieldName)) .Append(">:(no-results)"); return; } queryText.Append("@in<") .Append(RavenQuery.EscapeField(fieldName)) .Append(">:("); var first = true; AddItemToInClause(whereParams, list, first); queryText.Append(") "); }
private void WhereEquals(WhereParams whereParams, bool isReversed) { var fieldName = EnsureValidFieldName(whereParams, isReversed); var transformToEqualValue = TransformToEqualValue(whereParams, isReversed); lastEquality = new KeyValuePair <string, string>(fieldName, transformToEqualValue); AppendSpaceIfNeeded(queryText.Length > 0 && queryText[queryText.Length - 1] != '('); NegateIfNeeded(); queryText.Append(RavenQuery.EscapeField(fieldName)); queryText.Append(":"); if (fieldName.EndsWith("_numeric")) { var transformToRangeValue = TransformToRangeValue(new WhereParams { Value = whereParams.Value, FieldName = whereParams.FieldName }); queryText.Append("["); queryText.Append(transformToRangeValue); queryText.Append(" TO "); queryText.Append(transformToRangeValue); queryText.Append("]"); } else { queryText.Append(transformToEqualValue); } }
/// <summary> /// Matches fields where the value is between the specified start and end, inclusive /// </summary> /// <param name = "fieldName">Name of the field.</param> /// <param name = "start">The start.</param> /// <param name = "end">The end.</param> /// <returns></returns> public void WhereBetweenOrEqual(string fieldName, object start, object end) { AppendSpaceIfNeeded(queryText.Length > 0); NegateIfNeeded(); fieldName = GetFieldNameForRangeQueries(fieldName, start, end); queryText.Append(RavenQuery.EscapeField(fieldName)).Append(":["); queryText.Append(start == null ? "*" : TransformToRangeValue(new WhereParams { Value = start, FieldName = fieldName })); queryText.Append(" TO "); queryText.Append(end == null ? "NULL" : TransformToRangeValue(new WhereParams { Value = end, FieldName = fieldName })); queryText.Append("]"); }