コード例 #1
0
 /// <summary>
 /// Creates instance of query aggregate function.
 /// </summary>
 /// <param name="function">Sql function name</param>
 /// <param name="key">Sql function keyword (ALL, DISTINCT)</param>
 /// <param name="expression"></param>
 public QueryAggregate(QueryAggregateFunction function, QueryKey key, object expression)
 {
     // Initialization.
     QueryFunction = function;
     Expression    = expression;
     QueryKey      = key;
 }
コード例 #2
0
 /// <summary>
 /// Creates instance of query aggregate function.
 /// </summary>
 /// <param name="function">Sql function</param>
 /// <param name="parameters">Function parameters and expressions</param>
 public QueryFunction(QueryAggregateFunction function, params object[] parameters)
 {
     // Initialize.
     PartOfGroupBy = false;
     FunctionName  = function.ToString().ToUpper();
     SeperateParameters(parameters);
 }
コード例 #3
0
        public string GenerateAggregateQuery(DatabaseQuery query, QueryAggregateFunction function, string propertyName)
        {
            var sqlFunction = function.ToString();

            var columnValueExpression = MapColumn(propertyName);

            if (function == QueryAggregateFunction.Average)
            {
                sqlFunction = "AVG";

                var propertyType = query.EntityType.GetProperty(propertyName).PropertyType;

                if (propertyType == typeof(int) || propertyType == typeof(int?))
                {
                    columnValueExpression = $"CAST({columnValueExpression} AS decimal)";
                }
            }

            return($"SELECT {sqlFunction}({columnValueExpression}) FROM {GetTables()}" +
                   GenerateWhere(query));
        }
コード例 #4
0
 public object Aggregate(QueryAggregateFunction function, string propertyName)
 {
     return(Provider.Aggregate(this, function, propertyName));
 }
コード例 #5
0
 /// <summary>
 /// Creates instance of query aggregate function.
 /// </summary>
 /// <param name="function"></param>
 /// <param name="key"></param>
 /// <param name="expression"></param>
 /// <param name="partitionExpression"></param>
 /// <param name="overExpression"></param>
 public QueryAggregate(QueryAggregateFunction function, string expression, string partitionExpression, string overExpression)
 {
 }
コード例 #6
0
 /// <summary>
 /// Creates instance of query aggregate function.
 /// </summary>
 /// <param name="function"></param>
 /// <param name="key"></param>
 /// <param name="expression"></param>
 public QueryAggregate(QueryAggregateFunction function, string[] expression, string[] overExpression)
 {
 }
コード例 #7
0
        public object Aggregate(DatabaseQuery query, QueryAggregateFunction function, string propertyName)
        {
            var command = GenerateAggregateQuery(query, function, propertyName);

            return(ExecuteScalar(command, CommandType.Text, GenerateParameters(query.Parameters)));
        }