How can I combine several Expressions into a fast method?

Posted by chillitom on Stack Overflow See other posts from Stack Overflow or by chillitom
Published on 2010-03-10T17:24:10Z Indexed on 2010/03/20 8:51 UTC
Read the original article Hit count: 554

Suppose I have the following expressions:

Expression<Action<T, StringBuilder>> expr1 = (t, sb) => sb.Append(t.Name);
Expression<Action<T, StringBuilder>> expr2 = (t, sb) => sb.Append(", ");
Expression<Action<T, StringBuilder>> expr3 = (t, sb) => sb.Append(t.Description);

I'd like to be able to compile these into a method/delegate equivalent to the following:

void Method(T t, StringBuilder sb) 
{
    sb.Append(t.Name);
    sb.Append(", ");
    sb.Append(t.Description);
}

What is the best way to approach this? I'd like it to perform well, ideally with performance equivalent to the above method.

UPDATE So, whilst it appears that there is no way to do this directly in C#3 is there a way to convert an expression to IL so that I can use it with System.Reflection.Emit?

© Stack Overflow or respective owner

Related posts about c#

Related posts about LINQ