【发布时间】:2010-10-17 20:24:47
【问题描述】:
我被一个 LINQ 组困住了,试图在不使用 foreach 语句的情况下解决它,这里是 escenary:
我有两个通用集合List<OrderHeader>和List<OrderDetail>,它们都有一个相同的字段TOTRGVS,其中包含订单的总金额,订单数量是名为NDORGV的键。
然后我想找到“OrderHeader和OrderDetail中TOTRGVS不一样的订单”,所以我尝试了以下查询:
List<RGVCAFAC_ERRORES> diff = (from d in lstOrderDetail
join c in lstOrderHeader on d.NDORGV equals c.NDORGV
group d by d.NDORGV into g
let difTOTOrderDetail = g.Select(p => p.TOTRGVS).Sum()
let difTOTOrderHeader = g.Key.????
let diffTOT = difTOTOrderHeader - difTOTOrderDetail
where diffTOT != 0
select new _ERRORS
{
NDORGV = g.Key,
IMPORT = diffTOT
}
).ToList();
在difTOTOrderHeader 中,我不知道如何从OrderHeader 检索TOTRGVS 字段。我尝试过使用 Key 但无法获取任何字段,只是格式化方法的扩展。
【问题讨论】:
-
如果您认为不使用 foreach 循环很难完成这项工作,请考虑调试的难度。如果这样做更容易,请继续使用循环。