У меня есть модель EF4, в которой у меня есть сущность Product, которая имеет отношение один ко многим с сущностью Task (ChildTasks).Я должен получить несколько проектов из БД на основе некоторых пользовательских критериев.Проект имеет одно пользовательское свойство (не связанное ни с одним столбцом) с именем EstimatedProgress, в котором я должен хранить дополнительную информацию о проекте - вычисленный средневзвешенный прогресс каждой дочерней задачи.Проблема в том, что, наконец, я не могу вернуть IEnumerable <Project>
, но IQueryable <Project>
.Код ниже демонстрирует, чего я хочу достичь (я знаю, что он не компилируется).
var q = from p in ObjectContext.ProjectSet.Include("ProjectBase")
where p.ProjectBase.IsTemplate == false
from ct in p.ProjectBase.ChildTasks
where ct.Progress != null
&& ct.EstimatedTime != null
group ct by ct.prjProjectBase.Project into g
select new {
Project = g.Key,
EstimatedProgress = g.Sum(oo => oo.Progress.Value * oo.EstimatedTime.Value)
/ g.Sum(oo => oo.EstimatedTime.Value),
};
var sortedQ = q.OrderByDescending(o => o.Project.ProjectBase.Status)
.ThenBy(o => o.Project.ProjectBase.Name);
// this is where I want to return IQueryable<Project>
// where each project has set custom property EstimatedProgress
return sortedQ.Select(o =>
{
o.Project.EstimatedTime = o.EstimatedProgress;
return o.Project;
});
Вопрос заключается в следующем: возможно ли сделать что-то похожее на запрос EF4 linq или, возможно, у некоторых из вас есть обходной путь;) Заранее спасибо.