+1  A: 

I am not exactly sure what this is trying to achieve, or what your datamodel looks like, but something like this?

var subs = db.Subscriptions.Where(p => p.PatientID == patID).Where(p => p.MonitoringObject.Category.Name == "Medication");

var targets = subs
    .SelectMany(s => s.Targets)
    .Where(t => t.Date == t.Subscription.Targets.Max(_t => _t.Date))
AHM
Please see picture of data model above.
andreas
@andreas: What is wrong with this solution? AHM beat me to it, but I would have suggested something similar.
Jens
Yeah, I think you added the diagram of the model while I was writing my answer so I missed it, but it looks like I expected. Is it because you don't have the relation properties? If so you could use the join syntax to achieve the same effect.
AHM
I'm just very tired... but I'll try your solution right now., thanks
andreas