我結束了下面這個可怕的代碼,現在我得不到更好的結果。 什麼是更好的方法呢?LINQ to SQL,選擇具有最大日期的目標
這是關於我的數據庫的這一部分:
編輯
一個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;
你能解釋一下你想要選擇什麼嗎?是否所有目標在潛艇中都有訂購併且日期字段等於此集合中的最大值? – Jens 2010-03-17 12:58:24
好的,我會試試。 – andreas 2010-03-17 13:03:10