我有两个列表,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());
答案 0 :(得分:0)
您可以使用ddr.Dil
的{{3}}获得IEnumerable
中的最大金额。
另请注意,Max function上的文档说明了:
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));