Switched to using a complete expression tree so the delegate only needs to be compiled once.