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); }
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)}无效"); } }