There’s two options, an explicit delegate or a delegate disguised as a lamba construct:
explicit delegate
myObjects.RemoveAll(delegate (MyObject m) { return m.X >= 10; });
lambda
myObjects.RemoveAll(m => m.X >= 10);
Performance wise both are equal. As a matter of fact, both language constructs generate the same IL when compiled. This is because C# 3.0 is basically an extension on C# 2.0, so it compiles to C# 2.0 constructs