Меня заинтересовал ваш вопрос, потому что я только что предположил, что такого рода вещи всегда будут генерировать новый объект и, следовательно, его следует избегать в коде, который часто вызывается.
Я делаю что-то похожее, поэтому я решил использовать ildasm, чтобы выяснить, что именно происходит за кулисами. В моем случае оказалось, что каждый раз при вызове делегата создается новый объект, я не буду публиковать свой код, потому что он довольно сложный и не очень простой для понимания вне контекста. Я подозреваю, что это противоречит ответу, предоставленному MichaelGG, поскольку в своем примере он использует статические функции. Я бы посоветовал вам попробовать сами, прежде чем все спроектировать, а потом выяснить, что у вас есть проблема. ildasm - это путь (http://msdn.microsoft.com/en-us/library/f7dy01k1.aspx), ищите любые строки "newobj", они вам не нужны.
Также стоит использовать профиль CLR, чтобы узнать, выделяют ли ваши лямбда-функции память (http://www.microsoft.com/downloads/details.aspx?familyid=A362781C-3870-43BE-8926-862B40AA0CD0&displaylang=en).. Это говорит о том, что это для framework 2.0, но также работает и для 3.5, и это последняя доступная версия.