private void addCriteria_Button_Click(object sender, EventArgs e) { DocumentQueryCriteria criteria = CreateCriteria(); AddOrUpdateCriteria(criteria); RefreshCriteriaList(); }
private static string BuildInCondition(DocumentQueryCriteria criteria, bool include) { string inOperator = include ? "IN" : "NOT IN"; var quotedValues = criteria.Values.Select(n => $"'{n}'"); string joinedValues = string.Join(", ", quotedValues); return($"{inOperator} ({joinedValues})"); }
private static string BuildBetweenCondition(DocumentQueryCriteria criteria) { if (criteria.Values.Count < 2) { throw new InvalidOperationException("Two values must be provided for a BETWEEN where condition."); } return($"BETWEEN {criteria.Values[0]} AND {criteria.Values[1]}"); }
private void AddOrUpdateCriteria(DocumentQueryCriteria criteria) { DocumentQueryCriteria existing = _documentQuery.Criteria.FirstOrDefault(n => n.PropertyName == criteria.PropertyName); if (existing != null) { _documentQuery.Criteria.Remove(existing); } _documentQuery.Criteria.Add(criteria); OnSelectionChanged(); }
private static string BuildWhereExpression(DocumentQueryCriteria criteria) { if (!criteria.Values.Any()) { throw new InvalidOperationException($"No values provided for where clause expression for {criteria.PropertyName}."); } string condition = null; switch (criteria.QueryOperator) { case QueryOperator.Equal: case QueryOperator.LessThan: case QueryOperator.GreaterThan: case QueryOperator.LessThanOrEqual: case QueryOperator.GreaterThanOrEqual: case QueryOperator.NotEqual: condition = BuildOperatorCondition(criteria); break; case QueryOperator.Contains: condition = BuildLikeCondition(criteria, "%", "%"); break; case QueryOperator.BeginsWith: condition = BuildLikeCondition(criteria, null, "%"); break; case QueryOperator.EndsWith: condition = BuildLikeCondition(criteria, "%", null); break; case QueryOperator.IsIn: condition = BuildInCondition(criteria, true); break; case QueryOperator.IsNotIn: condition = BuildInCondition(criteria, false); break; case QueryOperator.IsBetween: condition = BuildBetweenCondition(criteria); break; default: throw new InvalidOperationException($"Unsupported query operator {criteria.QueryOperator}"); } return($"TestDocument.{criteria.PropertyName} {condition}"); }
private static string BuildOperatorCondition(DocumentQueryCriteria criteria) { var operatorStrings = new Dictionary <QueryOperator, string> { [QueryOperator.Equal] = "=", [QueryOperator.LessThan] = "<", [QueryOperator.GreaterThan] = ">", [QueryOperator.LessThanOrEqual] = "<=", [QueryOperator.GreaterThanOrEqual] = ">=", [QueryOperator.NotEqual] = "<>" }; string operatorString = operatorStrings[criteria.QueryOperator]; object value = criteria.Values[0]; string paramValue = (value is string) ? $"'{value}'" : value.ToString(); return($"{operatorString} {paramValue}"); }
public DocumentQueryCriteriaDisplay(DocumentQueryCriteria criteria) { Criteria = criteria; }
private void RemoveCriteria(DocumentQueryCriteria criteria) { _documentQuery.Criteria.Remove(criteria); OnSelectionChanged(); }
private static string BuildLikeCondition(DocumentQueryCriteria criteria, string prefix, string suffix) { return($"LIKE '{prefix}{criteria.Values[0]}{suffix}'"); }