我试图执行下面的查询,但我得到了错误的结果。ado.net实体框架在where子句中使用count
foreach (var item in (from project in db.Projects
where project.Id == pProjectId
from task in project.Tasks
from taskItem in task.TaskItems
where taskItem.Velocities.Count() == 0 // not finished yet
select new
{
ProjectId = pProjectId,
PriorityId = task.Priorities.Id,
TaskId = task.Id,
ResourceId = taskItem.Resources.Id,
EstimatedDuration = taskItem.EstimatedDuration,
TaskItemId = taskItem.Id
}))
{
}
我想从没有速度相关对象的所有taskItems生成对象。表结构是每个taskItem可以有很多速度。在这次调用之前,我给出了一些项目的速度,但是它们没有被这个where子句过滤。我做了什么明显的错误?
编辑:我认为(在盯着代码一段时间后)我需要指定某种分组。我实际上并不需要任何Velocity记录详细信息,而只是与任务项目相关的计数。
我不相信这是正确的答案。 '在project.Tasks任务'实际上执行一个内部连接,所以我相信如果我做了你的建议,它实际上必须是'在db.Tasks中连接任务'&c,在这种情况下,我会创建一个连接,我可以免费获得。此外......它给出了完全相同的(错误的)结果:/谢谢! – 2009-07-06 13:10:26
您也可以通过以下方法执行左外连接:...将r.prop中的r连接到source,并将other.prop等同于行。但不知道更多的数据模型很难具体。 (只是检查具有多个速度的taskItems在原始文件中是正确的。) – Richard 2009-07-06 15:19:45