Example #1
0
        public void Converter(DynamicQueryParam queryParam, Type propertyType, DynamicQueryKeyValueCollection collection)
        {
            if (string.IsNullOrWhiteSpace(queryParam.Value?.ToString()))
            {
                throw new ArgumentException("IN操作必须提供Value.");
            }
            var arr = queryParam.Value.ToString()
                      .Trim()
                      .Split(',')
                      .Where(i => !string.IsNullOrWhiteSpace(i))
                      .Select(i => ConverterHelper.ChangeType(i, propertyType)).ToList();

            var   listType = typeof(List <>);
            var   s        = listType.MakeGenericType(propertyType);
            IList list     = Activator.CreateInstance(s) as IList;

            foreach (var o in arr)
            {
                list.Add(o);
            }
            object valObj = list;

            if (!arr.Any())
            {
                throw new ArgumentException("IN操作必须提供Value.");
            }
            collection.Builder.Append($" @{collection.Ids++}.Contains({queryParam.Field}) ");
            collection.Values.Add(valObj);
        }
Example #2
0
        public void Converter(DynamicQueryParam queryParam, Type propertyType, DynamicQueryKeyValueCollection collection)
        {
            var conValue           = ConverterHelper.ChangeType(queryParam.Value, propertyType);
            var filed              = queryParam.Field;
            var whereParams        = collection.Values;
            var whereStringBuilder = collection.Builder;

            switch (queryParam.Operator)
            {
            case QueryOperation.Equal:
                whereParams.Add(conValue);
                whereStringBuilder.Append($"{filed} = @{collection.Ids++}");
                break;

            case QueryOperation.LessThan:
                whereParams.Add(conValue);
                whereStringBuilder.Append($"{filed} < @{collection.Ids++}");
                break;

            case QueryOperation.LessThanOrEqual:
                whereParams.Add(conValue);
                whereStringBuilder.Append($"{filed} <= @{collection.Ids++}");
                break;

            case QueryOperation.GreaterThan:
                whereParams.Add(conValue);
                whereStringBuilder.Append($"{filed} > @{collection.Ids++}");
                break;

            case QueryOperation.GreaterThanOrEqual:
                whereParams.Add(conValue);
                whereStringBuilder.Append($"{filed} >= @{collection.Ids++}");
                break;

            case QueryOperation.Contains:
                whereParams.Add(conValue);
                whereStringBuilder.Append($"{filed}.Contains(@{collection.Ids++})");
                break;

            case QueryOperation.StartsWith:
                whereParams.Add(conValue);
                whereStringBuilder.Append($"{filed}.StartsWith(@{collection.Ids++})");
                break;

            case QueryOperation.EndsWith:
                whereParams.Add(conValue);
                whereStringBuilder.Append($"{filed}.EndsWith(@{collection.Ids++})");
                break;

            default:
                throw new ArgumentException($"{nameof(QueryOperation)}无效");
            }
        }