我结束了下面这个可怕的代码,现在我得不到更好的结果。 什么是更好的方法呢?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