2013-03-28 62 views
1

我有相關的表像這樣的結構:鑑於WorkReleaseDetail.WorkReleaseHeaderId如何總結Linq中的擴展孩子的孩子的價值觀

enter image description here

,我想WorkOrderDetail.EstimatedQty的分組的總金額通過WorkOrderDetail.ItemId使用Linq擴展。

因爲我需要組最低的表,我想我能夠像。凡:

WorkOrderDetail.WorkOrderHeader.WorkReleaseDetail.WorkReleaseHeaderId == id

但沒有骰子當你在OrderGroupDetails停止,因爲它是一個集合,你唯一的選擇就是.Sum等,這是有道理的。

然後,我想這樣做(這應該工作):

var woDtlRepos = new Repository<WorkOrderDetail>(); 
var workOrdDtl = woDtlRepos.SearchFor(
x => x.WorkOrderHeader.FacilityId == intFacilityId 
&& x.WorkOrderHeader.WorkReleaseDetails.WorkOrderHeaderId == intWorkReleaseId); 

var workRlsNeeds = workOrdDtl 
.GroupBy(group => new 
    { 
     group.ItemId 
    } 
) 
.Select(result => new 
    { 
     ItemId = result.Key.ItemId, 
     TotalQty = result.Sum(a => a.EstimatedQuantity) 
    } 
); 

我怎樣才能做到這一點?

回答

1

唉唉......突然靈光一現...使用。任何()

var workOrdDtl = woDtlRepos.SearchFor(
x => x.WorkOrderHeader.FacilityId == intFacilityId 
&& x.WorkOrderHeader.WorkReleaseDetails.Any(woRlsHdr => woRlsHdr.WorkReleaseHeaderId ==  intWorkReleaseId));