我有两个表,任务和TaskMilestones。我想要查询返回每个任务的最近过去的里程碑和最近的未来TaskMilestone。我正在使用C#/ LINQ到SQL。我如何去做这件事?如何分组/聚合但返回汇总字段以外的字段?
任务栏:ID,TASKNAME TaskMilestones列:ID,任务id,MilestoneName,MilestoneDate
我想与含有行的返回表:TASKNAME,MilestoneDate,MilestoneName
我目前的解决方案导致的LINQ查询每个任务的数据库一次,这是无法接受的缓慢。
[编辑处理意见]当前的实现很简单,不是一个单一的语句,而只是用适当的where子句查询任务列表,然后为每个任务id查询两次:
var x = from p in this.Database.Task
join pm in this.Database.TaskMilestones on p.Id equals pm.TaskId
select new
{
TaskId = p.Id,
TaskName = p.Name,
MilestoneName = m.Name,
MilestoneDate = pm.MilestoneDate,
};
foreach (var record in records)
{
var y = x.Where(p => p.TaskId == record.Id && p.MilestoneDate <= dt);
var z = x.Where(p => p.TaskId == record.Id && p.MilestoneDate > dt);
...
也许将您当前的解决方案添加到该帖子中? – Andomar 2010-06-21 16:54:04
+1,我也有兴趣看到你目前的LINQ。 – VoodooChild 2010-06-21 17:13:13