1

次のような関連テーブルの構造があります。

ここに画像の説明を入力

WorkReleaseDetail.WorkReleaseHeaderId を指定して、Linq 拡張機能を使用して WorkOrderDetail.ItemId でグループ化された WorkOrderDetail.EstimatedQty の合計を取得したいと考えています。

一番下のテーブルをグループ化する必要があるので、できると思いました。

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)
    }
);

どうすればこれを達成できますか?

4

1 に答える 1

1

ああ...ひらめいた... use .Any()

var workOrdDtl = woDtlRepos.SearchFor(
x => x.WorkOrderHeader.FacilityId == intFacilityId
&& x.WorkOrderHeader.WorkReleaseDetails.Any(woRlsHdr => woRlsHdr.WorkReleaseHeaderId ==      intWorkReleaseId));
于 2013-03-28T05:26:09.187 に答える