コード例 #1
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);
 }
コード例 #2
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));
        }