public void AddTopParameter(long value, ODataPath path) { if (_constantToParameterMapper == null) { return; } String resourcePath = GetSegmentResourcePathTop(path); foreach (KeyValuePair <ConstantNode, OeQueryCacheDbParameterDefinition> pair in _constantToParameterMapper) { if (pair.Value.ParameterType == typeof(int) && pair.Key.LiteralText == resourcePath) { for (int i = 0; i < _parameterValues.Count; i++) { if (String.CompareOrdinal(_parameterValues[i].ParameterName, pair.Value.ParameterName) == 0) { if (value < (int)_parameterValues[i].ParameterValue) { _parameterValues[i] = new OeQueryCacheDbParameterValue(pair.Value.ParameterName, (int)value); } return; } } _parameterValues.Add(new OeQueryCacheDbParameterValue(pair.Value.ParameterName, (int)value)); return; } } throw new InvalidOperationException("top not found"); }
protected override IReadOnlyList <Expression> TranslateParameters( IReadOnlyList <ConstantExpression> constantExpressions, IReadOnlyDictionary <ConstantExpression, ConstantNode> constantsMappings) { var parameters = new ParameterExpression[constantExpressions.Count]; _parameterValues = new OeQueryCacheDbParameterValue[constantExpressions.Count]; for (int i = 0; i < constantExpressions.Count; i++) { ConstantExpression constantExpression = constantExpressions[i]; String parameterName = "__p_" + i.ToString(CultureInfo.InvariantCulture); ConstantNode constantNode = constantsMappings[constantExpression]; _constantToParameterMapper.Add(constantNode, new OeQueryCacheDbParameterDefinition(parameterName, constantExpression.Type)); _parameterValues[i] = new OeQueryCacheDbParameterValue(parameterName, constantExpression.Value); parameters[i] = Expression.Parameter(constantExpression.Type, parameterName); } return(parameters); }