0

ddr.Out と ddr.Dil の 2 つのリストがあります。最初のリストは、契約ごとにグループ化し、次に契約ごとに降順で並べ、次に金額ごとに並べ替える必要があります。これは、同じ契約のレコードが複数存在する可能性があり、金額が最も高いものだけが必要なためです。

次に、ddr.dil に存在する契約の金額で ddr.out の各金額を更新する必要があります。

私の問題は、ddr.out から最高額を取得する方法として、このステートメントに収まらないことです。

何か案は?ルイ・マルティンス

ddr.Out.GroupBy(ou => ou.Contract);
ddr.Out.OrderByDescending(ou => ou.Contract).ThenByDescending(ou=> ou.Amount);
ddr.Out.ForEach(ou => ou.Amount += ddr.Dil
    .Where(dil => dil.Referred && 
                  dil.Wad == wad &&
                  dil.Cycle == cal.ID && 
                  dil.Contract == ou.Contract)
    .Select(dil => dil.Amount)
    .FirstOrDefault());
4

1 に答える 1

0

Max機能ddr.Dilを使えば最大額を取得できます。IEnumerable

ForEachのドキュメントには次のように記載されていることにも注意してください。

Modifying the underlying collection in the body of the Action<T> delegate 
is not supported and causes undefined behavior.

むしろ、以下を使用して新しいコレクションを作成しSelect、置き換えますddr.Out

newOut = 
    ddr.Out.GroupBy(ou => ou.Contract)
       .OrderByDescending(ou => ou.Contract)
       .ThenByDescending(ou=> ou.Amount)
       .Select(ou => ou.Amount += ddr.Dil
           .Where(dil => dil.Referred && 
                  dil.Wad == wad &&
                  dil.Cycle == cal.ID && 
                  dil.Contract == ou.Contract)
           .Max(dil => dil.Amount));
于 2012-08-28T11:31:49.910 に答える