0

我有两个列表,ddr.Out 和 ddr.Dil。第一个列表我必须按合同分组,然后按合同降序排列,然后按金额排序,因为同一合同可能有多个记录,我只想要金额最高的记录。

然后我必须使用 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

ddr.Dil使用IEnumerable's Max 功能可以得到最大的量。

另请注意,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 回答