示例#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 });
        }
示例#2
0
文件: Filter.cs 项目: KorzunAV/Plan
 /// <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);
 }
示例#3
0
文件: Filter.cs 项目: KorzunAV/Plan
 /// <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);
 }
示例#4
0
文件: Filter.cs 项目: NecoMeco/Plan
 /// <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;
 }
示例#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));
 }
示例#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));
 }
示例#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));
 }
示例#8
0
 /// <summary>
 /// A property value sum
 /// </summary>
 /// <param name="projection"></param>
 /// <returns></returns>
 public static AbstractProjection Sum(AbstractProjection projection)
 {
     return(new SumProjection(projection));
 }
示例#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);
 }
示例#10
0
 /// <summary>
 /// A property value sum
 /// </summary>
 /// <param name="projection"></param>
 /// <returns></returns>
 public static AbstractProjection Sum(AbstractProjection projection)
 {
     return new SumProjection(projection);
 }
示例#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);
 }
示例#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);
 }
示例#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);
 }
示例#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);
 }
示例#15
0
文件: Distinct.cs 项目: NecoMeco/Plan
 /// <summary>
 /// Конструктор
 /// </summary>
 public Distinct(AbstractProjection projection)
 {
     _projection = projection;
 }
示例#16
0
 public ProjectionList Add(AbstractProjection projection)
 {
     elements.Add(projection);
     return this;
 }
示例#17
0
 public ProjectionList Add(AbstractProjection projection, String alias)
 {
     return Add(Projections.Alias(projection, alias));
 }
示例#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);
 }
示例#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));
 }
示例#20
0
 public ProjectionList Add(AbstractProjection projection)
 {
     elements.Add(projection);
     return(this);
 }
示例#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));
        }
示例#22
0
 public ProjectionList Add(AbstractProjection projection, String alias)
 {
     return(Add(Projections.Alias(projection, alias)));
 }
示例#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));
 }
示例#24
0
文件: Distinct.cs 项目: KorzunAV/Plan
 /// <summary>
 /// Конструктор
 /// </summary>
 public Distinct(AbstractProjection projection)
 {
     _projection = projection;
 }
示例#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 }));
        }
示例#26
0
文件: Filter.cs 项目: NecoMeco/Plan
 /// <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;
 }