"=>" defines a lambda expression. You want ">=" which is a comparison operator (greater than or equal to). By making a lambda you're re-defining waterAmount.
For a more detailed explanation of what's going on, a lambda can capture it's enclosing scope's variables. One side effect of this is that symbols (like waterAmount) can not be duplicated between the lambda's scope and enclosing scope. For instance, how would you resolve the following:
Func<int, int> lambda = waterAmount => waterAmount * waterAmount;
Which waterAmount does the lambda's code refer to? The parameter twice, the local twice, or a mix?
This also applies to local/nested functions (functions defined in functions).
For more: The Beauty of Closures