Ejemplo n.º 1
0
        private static object GetScalar(string fieldName, string tableAlias, CSAggregate aggregate, CSFilter queryFilter, string orderBy)
        {
            CSSchema schema = CSSchema.Get(typeof(T));

            if (tableAlias == null)
            {
                tableAlias = CSNameGenerator.NextTableAlias;
            }

            if (orderBy == null)
            {
                orderBy = "";
            }

            string aggregateExpr = null;

            int maxRows = 0;

            switch (aggregate)
            {
            case CSAggregate.None: aggregateExpr = "{0}"; maxRows = 1;    break;

            case CSAggregate.Sum: aggregateExpr = "sum({0})";            break;

            case CSAggregate.SumDistinct: aggregateExpr = "sum(distinct {0})";   break;

            case CSAggregate.Count: aggregateExpr = "count(*)";            break;

            case CSAggregate.CountDistinct: aggregateExpr = "count(distinct {0})"; break;

            case CSAggregate.Avg: aggregateExpr = "avg({0})";            break;

            case CSAggregate.AvgDistinct: aggregateExpr = "avg(distinct {0})";   break;

            case CSAggregate.Max: aggregateExpr = "max({0})";            break;

            case CSAggregate.Min: aggregateExpr = "min({0})";            break;
            }

            CSJoinList joins = new CSJoinList();

            if (fieldName != "*")
            {
                fieldName = CSExpressionParser.ParseFilter(fieldName, schema, tableAlias, joins);
            }

            string whereFilter = CSExpressionParser.ParseFilter(queryFilter.Expression, schema, tableAlias, joins);

            orderBy = CSExpressionParser.ParseOrderBy(orderBy, schema, tableAlias, joins);

            string sqlQuery = schema.DB.BuildSelectSQL(schema.TableName, tableAlias, new[] { String.Format(aggregateExpr, fieldName) }, null, joins.BuildJoinExpressions(), whereFilter, orderBy, 1, maxRows, false, false);

            return(schema.DB.GetScalar(sqlQuery, queryFilter.Parameters));
        }
Ejemplo n.º 2
0
        public object GetScalar(string fieldName, CSAggregate aggregate, string filterExpression, CSParameterCollection filterParameters)
        {
            string tableAlias = CSNameGenerator.NextTableAlias;

            CSFilter queryFilter = Filter.And(BuildRelationFilter(tableAlias));

            if (!string.IsNullOrEmpty(filterExpression))
            {
                queryFilter = queryFilter.And(filterExpression, filterParameters);
            }

            return(CSObject <TObjectType> .GetScalar(fieldName, tableAlias, aggregate, queryFilter));
        }
Ejemplo n.º 3
0
 public object GetScalar(string fieldName, CSAggregate aggregate, string filterExpression, string paramName, object paramValue)
 {
     return(GetScalar(fieldName, aggregate, filterExpression, new CSParameterCollection(paramName, paramValue)));
 }
Ejemplo n.º 4
0
 public object GetScalar(string fieldName, CSAggregate aggregate, string filterExpression)
 {
     return(GetScalar(fieldName, aggregate, filterExpression, null));
 }
Ejemplo n.º 5
0
 public object GetScalar(string fieldName, CSAggregate aggregate)
 {
     return(GetScalar(fieldName, aggregate, null, null));
 }
Ejemplo n.º 6
0
 internal static TScalar GetScalar <TScalar>(string fieldName, string tableAlias, CSAggregate aggregate, CSFilter queryFilter)
 {
     return(GetScalar <TScalar>(fieldName, tableAlias, aggregate, queryFilter, null));
 }
Ejemplo n.º 7
0
 private static TReturn GetScalar <TReturn>(string fieldName, string tableAlias, CSAggregate aggregate, CSFilter queryFilter, string orderBy)
 {
     return(GetScalar(fieldName, tableAlias, aggregate, queryFilter, orderBy).Convert <TReturn>());
 }
Ejemplo n.º 8
0
 public static TScalar GetScalar <TScalar>(string fieldName, CSAggregate aggregate, string filterExpression, CSParameterCollection filterParameters)
 {
     return(GetScalar <TScalar>(fieldName, null, aggregate, new CSFilter(filterExpression, filterParameters)));
 }
Ejemplo n.º 9
0
 public static TScalar GetScalar <TScalar>(string fieldName, CSAggregate aggregate, string filterExpression, string paramName1, object paramValue1, string paramName2, object paramValue2, string paramName3, object paramValue3)
 {
     return(GetScalar <TScalar>(fieldName, aggregate, filterExpression, new CSParameterCollection(paramName1, paramValue1, paramName2, paramValue2, paramName3, paramValue3)));
 }
Ejemplo n.º 10
0
 public static TScalar GetScalar <TScalar>(string fieldName, CSAggregate aggregate, string filterExpression)
 {
     return(GetScalar <TScalar>(fieldName, aggregate, filterExpression, CSParameterCollection.Empty));
 }
Ejemplo n.º 11
0
 public static TScalar GetScalar <TScalar>(string fieldName, CSAggregate aggregate)
 {
     return(GetScalar <TScalar>(fieldName, null, aggregate, CSFilter.None));
 }
Ejemplo n.º 12
0
 public static object GetScalar(string fieldName, CSAggregate aggregate)
 {
     return(GetScalar(fieldName, null, aggregate, CSFilter.None));
 }