我有一個EF4模型,其中有與Task實體(ChildTasks)具有一對多關係的Product實體。我必須根據一些用戶標準從db中獲取一些項目。該項目有一個名爲EstimatedProgress的定製屬性(不與任何列關聯),我必須存儲有關Project的附加信息 - 每個子任務的計算加權平均進度。問題是,最後我不能返回IEnumerable <Project>
但IQueryable <Project>
。下面的代碼演示了我想實現的目標(我知道它不能編譯)。如何在LINQ to Entities查詢中設置實體類型的自定義屬性,並返回IQueryable <T>?
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查詢或者一些你有一個解決辦法;)在此先感謝。
感謝您的回答SLaks。不幸的是,這不是一個選項。在定義它之後,如果我可以使用我的IQueryable,Getter就沒問題了(而且它不會是導致效率低下的最佳解決方案 - 一個數據庫調用結果中的每個項目)。我寫關於IQueryable的原因是我使用Silverlight + WCF RIA Services,而在客戶端我想在datagrid中使用分頁(並且只有服務器端的IQueryable完全支持它)。任何其他想法? – wlf84k 2010-07-12 21:46:45