Я закончил с этим ужасным кодом ниже, я не могу получить лучший результат сейчас.
Как лучше это сделать?
Речь идет об этой части моей базы данных:
EDIT
A Patient
имеет Subscription
для кратного MonitoringObjects
. Target
записи относятся к этим Subscriptions
. Я хочу получить целевые записи с самой новой датой в Subscription
для данного Patient
и Category
из MonitoringObjects
. Эти целевые записи могут иметь разные максимальные даты, поскольку Targets
можно добавить для Subscriptions
до MonitoringsObjects
независимо.
var subs = db.Subscriptions.Where(p => p.PatientID == patID).Where(p => p.MonitoringObject.Category.Name == "Medication");
var targets1 = from t in db.Targets
where subs.Contains(t.Subscription)
select t;
var maxTa = from t in db.Targets
group t by t.SubscriptionID
into g
select new
{
Ky = g.Key,
Date = g.Max(p => p.Date)
};
var targets2 = from t in targets1
where maxTa.Select(p => p.Ky).Contains( t.SubscriptionID ) &&
maxTa.Select(p => p.Date).Contains( t.Date )
select t;