/// <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 }); }
/// <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); }
/// <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); }
/// <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; }
/// <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)); }
/// <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)); }
/// <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)); }
/// <summary> /// A property value sum /// </summary> /// <param name="projection"></param> /// <returns></returns> public static AbstractProjection Sum(AbstractProjection projection) { return(new SumProjection(projection)); }
/// <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); }
/// <summary> /// A property value sum /// </summary> /// <param name="projection"></param> /// <returns></returns> public static AbstractProjection Sum(AbstractProjection projection) { return new SumProjection(projection); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <summary> /// Конструктор /// </summary> public Distinct(AbstractProjection projection) { _projection = projection; }
public ProjectionList Add(AbstractProjection projection) { elements.Add(projection); return this; }
public ProjectionList Add(AbstractProjection projection, String alias) { return Add(Projections.Alias(projection, alias)); }
///// <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); }
/// <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)); }
public ProjectionList Add(AbstractProjection projection) { elements.Add(projection); return(this); }
///// <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)); }
public ProjectionList Add(AbstractProjection projection, String alias) { return(Add(Projections.Alias(projection, alias))); }
/// <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)); }
/// <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 })); }
/// <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; }