Пример #1
0
        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]}");
        }
Пример #4
0
        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}");
        }
Пример #7
0
 public DocumentQueryCriteriaDisplay(DocumentQueryCriteria criteria)
 {
     Criteria = criteria;
 }
Пример #8
0
 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}'");
 }