Exemplo n.º 1
0
        /// <summary>
        /// Create sql CASE statement <br/>
        /// for example<br/> 
        /// <example>
        ///  case<br/>
        ///     when Expression1 then Projection 1 <br/>
        ///     when Expression2 then Projection 2<br/>
        ///     when Expression3 then Projection 3<br/>
        ///     else elseProjection <br/>
        ///  end<br/>
        /// </example>
        /// </summary>
        /// <param name="whenThenExpressions">List of pairs of WhenExpression/ThenProjection's</param>
        /// <param name="elseProjection">Projection for else</param>
        /// <param name="alias">Alias of projection</param>
        /// <param name="filterDataType">Type of result projection</param>
        /// <returns>Projection</returns>
        public static AbstractProjection Case(List<KeyValuePair<AbstractExpression, AbstractProjection>> whenThenExpressions, AbstractProjection elseProjection, string alias, FilterDataType filterDataType)
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendFormat("(case ");
            foreach (var whenThenExpression in whenThenExpressions)
            {
                sb.AppendFormat(" when ");
                sb.Append(whenThenExpression.Key);
                sb.AppendFormat(" then ");
                sb.Append(whenThenExpression.Value);
            }
            sb.Append(" else ");
            sb.Append(elseProjection);
            sb.Append(" end )");
            sb.AppendFormat(" as {0}", alias);

            string sql = sb.ToString();

            return SqlProjection(sql, new[] { alias }, new[] { filterDataType });
        }
Exemplo n.º 2
0
 /// <summary>
 /// Used to specify that the query results will be a projection (scalar in nature). Implicitly specifies the projection result transformer.
 /// </summary>
 /// <param name="projection">The projection representing the overall "shape" of the query results.</param>
 /// <param name="alias">The projection alias.</param>
 /// <returns></returns>
 public virtual IFilter AddProjection(AbstractProjection projection, string alias)
 {
     Projections.Add(projection, alias);
     return(this);
 }
Exemplo n.º 3
0
 /// <summary>
 /// Used to specify that the query results will be a projection (scalar in nature). Implicitly specifies the projection result transformer.
 /// </summary>
 /// <param name="projection">The projection representing the overall "shape" of the query results.</param>
 /// <returns></returns>
 public virtual IFilter AddProjection(AbstractProjection projection)
 {
     Projections.Add(projection);
     return(this);
 }
Exemplo n.º 4
0
 /// <summary>
 /// Used to specify that the query results will be a projection (scalar in nature). Implicitly specifies the projection result transformer.
 /// </summary>
 /// <param name="projection">The projection representing the overall "shape" of the query results.</param>
 /// <param name="alias">The projection alias.</param>
 /// <returns></returns>
 public virtual IFilter AddProjection(AbstractProjection projection, string alias)
 {
     Projections.Add(projection, alias);
     return this;
 }
Exemplo n.º 5
0
 /// <summary>
 /// Create a distinct projection from a projection
 /// </summary>
 /// <param name="projection"></param>
 /// <returns></returns>
 public static AbstractProjection Distinct(AbstractProjection projection)
 {
     return(new Distinct(projection));
 }
Exemplo n.º 6
0
 /// <summary>
 /// Casts the projection result to the specified type.
 /// </summary>
 /// <param name="type">The type.</param>
 /// <param name="projection">The projection.</param>
 /// <returns></returns>
 public static AbstractProjection Cast(FilterDataType type, AbstractProjection projection)
 {
     return(new CastProjection(type, projection));
 }
Exemplo n.º 7
0
 /// <summary>
 /// A projected property value
 /// </summary>
 /// <param name="projection">Projection object</param>
 /// <param name="propertiesToGroup">Properties from projectionToGroup</param>
 /// <returns></returns>
 public static AbstractProjection Group(AbstractProjection projection, params string [] propertiesToGroup)
 {
     return(new GroupProjection(projection, propertiesToGroup));
 }
Exemplo n.º 8
0
 /// <summary>
 /// A property value sum
 /// </summary>
 /// <param name="projection"></param>
 /// <returns></returns>
 public static AbstractProjection Sum(AbstractProjection projection)
 {
     return(new SumProjection(projection));
 }
Exemplo n.º 9
0
 /// <summary>
 /// A property value sum
 /// </summary>
 /// <param name="projection"></param>
 /// <param name="castToBool">Cast result to bool</param>
 /// <returns></returns>
 public static AbstractProjection Sum(AbstractProjection projection, bool castToBool)
 {
     return new SumProjection(projection, castToBool);
 }
Exemplo n.º 10
0
 /// <summary>
 /// A property value sum
 /// </summary>
 /// <param name="projection"></param>
 /// <returns></returns>
 public static AbstractProjection Sum(AbstractProjection projection)
 {
     return new SumProjection(projection);
 }
Exemplo n.º 11
0
 /// <summary>
 /// A projected property value
 /// </summary>
 /// <param name="projection">Projection object</param>
 /// <param name="propertiesToGroup">Properties from projectionToGroup</param>
 /// <returns></returns>
 public static AbstractProjection Group(AbstractProjection projection, params string [] propertiesToGroup)
 {
     return new GroupProjection(projection, propertiesToGroup);
 }
Exemplo n.º 12
0
 /// <summary>
 /// Create a distinct projection from a projection
 /// </summary>
 /// <param name="projection"></param>
 /// <returns></returns>
 public static AbstractProjection Distinct(AbstractProjection projection)
 {
     return new Distinct(projection);
 }
Exemplo n.º 13
0
 /// <summary>
 /// Conditionally return the true or false part, dependention on the criterion
 /// </summary>
 /// <param name="criterion">The criterion.</param>
 /// <param name="whenTrue">The when true.</param>
 /// <param name="whenFalse">The when false.</param>
 /// <returns></returns>
 public static AbstractProjection Conditional(AbstractExpression criterion, AbstractProjection whenTrue, AbstractProjection whenFalse)
 {
     return new ConditionalProjection(criterion, whenTrue, whenFalse);
 }
Exemplo n.º 14
0
 /// <summary>
 /// Casts the projection result to the specified type.
 /// </summary>
 /// <param name="type">The type.</param>
 /// <param name="projection">The projection.</param>
 /// <returns></returns>
 public static AbstractProjection Cast(FilterDataType type, AbstractProjection projection)
 {
     return new CastProjection(type, projection);
 }
Exemplo n.º 15
0
 /// <summary>
 /// Конструктор
 /// </summary>
 public Distinct(AbstractProjection projection)
 {
     _projection = projection;
 }
Exemplo n.º 16
0
 public ProjectionList Add(AbstractProjection projection)
 {
     elements.Add(projection);
     return this;
 }
Exemplo n.º 17
0
 public ProjectionList Add(AbstractProjection projection, String alias)
 {
     return Add(Projections.Alias(projection, alias));
 }
Exemplo n.º 18
0
 ///// <summary>
 ///// A projected identifier value
 ///// </summary>
 ///// <returns></returns>
 //public static IdentifierProjection Id()
 //{
 //    return new IdentifierProjection();
 //}
 /// <summary>
 /// Assign an alias to a projection, by wrapping it
 /// </summary>
 /// <param name="projection"></param>
 /// <param name="alias"></param>
 /// <returns></returns>
 public static AbstractProjection Alias(AbstractProjection projection, string alias)
 {
     return new AliasedProjection(projection, alias);
 }
Exemplo n.º 19
0
 /// <summary>
 /// A property value sum
 /// </summary>
 /// <param name="projection"></param>
 /// <param name="castToBool">Cast result to bool</param>
 /// <returns></returns>
 public static AbstractProjection Sum(AbstractProjection projection, bool castToBool)
 {
     return(new SumProjection(projection, castToBool));
 }
Exemplo n.º 20
0
 public ProjectionList Add(AbstractProjection projection)
 {
     elements.Add(projection);
     return(this);
 }
Exemplo n.º 21
0
        ///// <summary>
        ///// A projected identifier value
        ///// </summary>
        ///// <returns></returns>
        //public static IdentifierProjection Id()
        //{
        //    return new IdentifierProjection();
        //}

        /// <summary>
        /// Assign an alias to a projection, by wrapping it
        /// </summary>
        /// <param name="projection"></param>
        /// <param name="alias"></param>
        /// <returns></returns>
        public static AbstractProjection Alias(AbstractProjection projection, string alias)
        {
            return(new AliasedProjection(projection, alias));
        }
Exemplo n.º 22
0
 public ProjectionList Add(AbstractProjection projection, String alias)
 {
     return(Add(Projections.Alias(projection, alias)));
 }
Exemplo n.º 23
0
 /// <summary>
 /// Conditionally return the true or false part, dependention on the criterion
 /// </summary>
 /// <param name="criterion">The criterion.</param>
 /// <param name="whenTrue">The when true.</param>
 /// <param name="whenFalse">The when false.</param>
 /// <returns></returns>
 public static AbstractProjection Conditional(AbstractExpression criterion, AbstractProjection whenTrue, AbstractProjection whenFalse)
 {
     return(new ConditionalProjection(criterion, whenTrue, whenFalse));
 }
Exemplo n.º 24
0
 /// <summary>
 /// Конструктор
 /// </summary>
 public Distinct(AbstractProjection projection)
 {
     _projection = projection;
 }
Exemplo n.º 25
0
        /// <summary>
        /// Create sql CASE statement <br/>
        /// for example<br/>
        /// <example>
        ///  case<br/>
        ///     when Expression1 then Projection 1 <br/>
        ///     when Expression2 then Projection 2<br/>
        ///     when Expression3 then Projection 3<br/>
        ///     else elseProjection <br/>
        ///  end<br/>
        /// </example>
        /// </summary>
        /// <param name="whenThenExpressions">List of pairs of WhenExpression/ThenProjection's</param>
        /// <param name="elseProjection">Projection for else</param>
        /// <param name="alias">Alias of projection</param>
        /// <param name="filterDataType">Type of result projection</param>
        /// <returns>Projection</returns>
        public static AbstractProjection Case(List <KeyValuePair <AbstractExpression, AbstractProjection> > whenThenExpressions, AbstractProjection elseProjection, string alias, FilterDataType filterDataType)
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendFormat("(case ");
            foreach (var whenThenExpression in whenThenExpressions)
            {
                sb.AppendFormat(" when ");
                sb.Append(whenThenExpression.Key);
                sb.AppendFormat(" then ");
                sb.Append(whenThenExpression.Value);
            }
            sb.Append(" else ");
            sb.Append(elseProjection);
            sb.Append(" end )");
            sb.AppendFormat(" as {0}", alias);

            string sql = sb.ToString();

            return(SqlProjection(sql, new[] { alias }, new[] { filterDataType }));
        }
Exemplo n.º 26
0
 /// <summary>
 /// Used to specify that the query results will be a projection (scalar in nature). Implicitly specifies the projection result transformer.
 /// </summary>
 /// <param name="projection">The projection representing the overall "shape" of the query results.</param>
 /// <returns></returns>
 public virtual IFilter AddProjection(AbstractProjection projection)
 {
     Projections.Add(projection);
     return this;
 }