how about

public Action<Row, Row> Action {get;set;}

public IEnumerable<Row> Execute (IEnumerable<Row> rows)
{
   return rows.Select(row => action(row));
}

On Dec 23, 2:02 pm, Nathan Palmer <[email protected]> wrote:
> Have you looked into making the other operations inline? You may run into an
> issue with using yield. Optimally it would be great to specify an abstract
> operation using an anonymous method. But yield is not allowed there which
> causes issues.
>
> Register(new Operation {
>    Execute = (r) => {
>       yield return r;
>    }
>
> });
>
> Nathan Palmer
>
> On Thu, Dec 23, 2010 at 11:56 AM, Gauthier Segay
> <[email protected]>wrote:
>
> > Thanks Jason and Nathan
>
> > regarding constructor / property initializer syntax, I think my issue
> > is that a join operation without proper settings is not valid, the
> > constructor enforce proper initialization. For those using c#4 with
> > named arguments that is not looking that much different than property
> > intializers
>
> > But I'm ok to use property initializer for optional things (like
> > orphan row handlers, operation name, etc.)
>
> > Thanks for your feedback, I'll be pushing other operations and unit
> > tests in my fork
>
> > On Dec 23, 7:21 am, Nathan Palmer <[email protected]> wrote:
> > > I like the idea of having this require less code when doing it in C#. I
> > use
> > > the DSL most of the time for that very reason.
>
> > > I do prefer the instantiators over the constructor though.
>
> > > Nathan Palmer
>
> > > On Thu, Dec 23, 2010 at 6:41 AM, Jason Meckley <[email protected]
> > >wrote:
>
> > > > I would go with properties instead of ctor args and take advantage of
> > > > 3.0s instantiators. This way you don't need builder objects.
>
> > > > Register(new InLineJoinOperation
> > > >   {
> > > >      JoinType = JoinType.Inner
> > > >      LeftOperation = ThisOp(),
> > > >      LeftColumnsToJoinOn = new[]{"column1"},
> > > >      RightOperation = ThisOp(),
> > > >      RightColumnsToJoinOn = new[]{"column1"},
> > > >      Action = (left, right) => {left}
> > > >   });
>
> > > > On Dec 22, 3:29 pm, Gauthier Segay <[email protected]> wrote:
> > > > > Hi,
>
> > > > > I started to use Rhino ETL framework and found useful to be able to
> > > > > define operations inline in my processes, what I mean is that I don't
> > > > > have to define a class for each typical operation (like join,
> > > > > aggregation, filtering, inline sql output, etc.).
>
> > > > > I intend to add those inline operation to the framework itself
> > because
> > > > > I think it would be useful to other people as well, I started with
> > > > > InlineJoinOperation that you can look at here:
>
> >https://github.com/smoothdeveloper/rhino-etl/blob/master/Rhino.Etl.Co...
>
> > > > > so to do a plain join operation I can now register something like
> > > > > this:
>
> > > > > var ensureMergerReturnsNewRow = true;
> > > > > new InlineJoinOperation(
> > > > >         columnsToJoinOn,
> > > > >         columnsToJoinOn,
> > > > >         JoinType.Inner,
> > > > >         (left, row) => { // return join result; },
> > > > >         leftoperation,
> > > > >         rightoperation,
> > > > >         ensureMergerReturnsNewRow
> > > > > );
>
> > > > > instead of having to define a specific class
>
> > > > > Anybody think it's a good thing to have those baked in the framework?
> > > > > Do you have any feedback on what is shown in this first class?
>
> > > > > The icing on the cake for this would be to have fluent operation
> > > > > builder to encapsulate the bulky constructors, for this I'm looking
> > > > > for syntax ideas.
>
> > > > > Thanks for your feedback
>
> > > > --
> > > > You received this message because you are subscribed to the Google
> > Groups
> > > > "Rhino Tools Dev" group.
> > > > To post to this group, send email to [email protected].
> > > > To unsubscribe from this group, send email to
> > > > [email protected]<rhino-tools-dev%[email protected]>
> > <rhino-tools-dev%2Bunsubscribe@ googlegroups.com>
> > > > .
> > > > For more options, visit this group at
> > > >http://groups.google.com/group/rhino-tools-dev?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Rhino Tools Dev" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rhino-tools-dev?hl=en.

Reply via email to