As you use a subquery, you should use a FieldCompareSetPredicate. The setfield should get the AggregateFunction.Max applied to it (field.AggregateFunctionToUse = AggregateFunction.Max). For the Set operator, you use Equal.
You can also do this without 'max' though. Use a FieldCompareSetPredicate, specify an order by on the field where you want the max of, descending, and specify that you want just 1 value (use one of the overloads of FieldCompareSetPredicate's constructors). That will not aggregate and is usually faster.
If you run into problems setting up the predicate with FieldCompareSetPredicate (please check the How Do I? section for an example of the FieldCompareSetpredicate to get an idea how to use it), please paste the code you have so far and we'll help you correct the code.