I stumbled across this article and found it very interesting, so I ran some tests on my own:
Test One:
List actions = new
This is because of variable capturing in C# that can be a little tricky
In a nutshell, Each loop of the for loop is referring to the same variable i so the compiler uses the same lambda expression for all loops.
If it is any consolation, This oddity is worse in javascript as javascript only has function scopes for variables so even your second solution won't do what you expect it to.
This is also a very good explanation