Ich versuche, die folgende Abfrage auszuführen, aber ich bekomme die falschen Ergebnisse zurück.ado.net Entity Framework mit count in einer Where-Klausel
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
}))
{
}
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
}))
{
}
Ich versuche, Objekte aus allen TaskItems zu generieren, die keine geschwindigkeitsbezogenen Objekte haben. Die Tabellenstruktur besteht darin, dass jedes taskItem viele Geschwindigkeiten haben kann. Kurz vor diesem Aufruf gebe ich einigen Elementen Geschwindigkeiten, die jedoch nicht durch diese where-Klausel gefiltert werden. Mache ich etwas offensichtlich falsch?
Bearbeiten: Ich denke (nachdem ich den Code für eine Weile starrte), dass ich eine Art von Gruppierung angeben muss. Ich benötige eigentlich keine der Velocity-Datensatzdetails, sondern nur eine Anzahl von ihnen, die sich auf die taskItems beziehen.
das ist was ich getan habe ... an diesem Punkt ist meine Anwendung gut erzogen, wenn auch ein wenig suboptimal. –