The version that uses Contract.Exists is preferred due to its declarative nature. Another advantage is that the framework knows this contract and it has better chance of being "caught" in static analysis.

Can you elaborate what you mean by "preferred due to its declarative nature"? Also, does static analysis actually work with delegates? I would expect that the fact you can put arbitrary code into that lambda would nullify any possible static analysis.
–
scobiMay 7 '10 at 16:16