我有兩個表,任務和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