/// <summary> /// Performs a strongly typed, arbitrary transformation. /// </summary> /// <typeparam name="TIn">The type of the input.</typeparam> /// <typeparam name="TOut">The type of the output.</typeparam> /// <param name="config">The for clause to which the step is added.</param> /// <param name="transform">The transformation to perform.</param> /// <returns></returns> public static IForClause <TOut> Do <TIn, TOut> (this IForClause <TIn> config, Func <TIn, TOut> transform) { return(config.Attach(ProcessingStep.Do(transform))); }
/// <summary> /// Casts an arbitrary sequence to a specific sequence using the LINQ <code>OfType()</code> method. /// </summary> /// <typeparam name="T">The type of the target sequence.</typeparam> /// <param name="config">The for clause to which the step is added.</param> /// <returns></returns> public static IForClause <IEnumerable <T> > SeqOfType <T>(this IForClause <IEnumerable> config) { return(config.Attach(ProcessingStep.SeqOfType <T>())); }
/// <summary> /// Casts an arbitrary value to a sequence of type <code>Object</code>. /// </summary> /// <param name="config">The for clause to which the step is added.</param> /// <returns></returns> public static IForClause <IEnumerable <object> > AsSeq(this IForClause config) { return(config.Attach(ProcessingStep.As <IEnumerable <object> >())); }
/// <summary> /// Joins a series of strings using one delimeter, and the last item with a different delimeter, they way one might join a sequence of words. /// </summary> /// <param name="config">The config.</param> /// <param name="delimeter">The delimeter.</param> /// <param name="lastDelimeter">The last delimeter.</param> /// <returns></returns> public static IForClause <string> WordJoin(this IForClause <IEnumerable <string> > config, string delimeter, string lastDelimeter) { return(config.Attach(ProcessingStep.WordJoin(delimeter, lastDelimeter))); }
/// <summary> /// Joins a series of strings. /// </summary> /// <param name="config">The config.</param> /// <param name="delimeter">The delimeter.</param> /// <returns></returns> public static IForClause <string> TextJoin(this IForClause <IEnumerable <string> > config, string delimeter) { return(config.Attach(ProcessingStep.TextJoin(delimeter))); }
/// <summary> /// Invokes the LINQ method <code>Where</code> on the input. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="config">The config.</param> /// <param name="predicate">The predicate.</param> /// <returns></returns> public static IForClause <IEnumerable <T> > Where <T>(this IForClause <IEnumerable <T> > config, Func <T, bool> predicate) { return(config.Attach(ProcessingStep.Where(predicate))); }
/// <summary> /// Invokes the LINQ method <code>Select</code> on the input. /// </summary> /// <typeparam name="TIn">The type of the in.</typeparam> /// <typeparam name="TOut">The type of the out.</typeparam> /// <param name="config">The config.</param> /// <param name="selector">The selector.</param> /// <returns></returns> public static IForClause <IEnumerable <TOut> > Select <TIn, TOut>(this IForClause <IEnumerable <TIn> > config, Func <TIn, TOut> selector) { return(config.Attach(ProcessingStep.Select(selector))); }
/// <summary> /// Casts the value from one type to another. /// </summary> /// <typeparam name="TOut">The type of the cast.</typeparam> /// <param name="config">The for clause to which the step is added.</param> /// <returns></returns> public static IForClause <TOut> As <TOut>(this IForClause config) { return(config.Attach(ProcessingStep.As <TOut>())); }