Je suis coincé avec un groupe LINQ par la situation en essayant de le résoudre sans utiliser la déclaration foreach
, voici le escenary:Opérations sur LINQ Lambda Groupement
J'ai deux collections génériques List<OrderHeader>
et List<OrderDetail>
, les deux ont un même domaine TOTRGVS
qui contient le montant total d'une commande, et le numéro de commande est la clé nommée NDORGV
.
Alors je veux trouver « les commandes qui ont pas le même TOTRGVS
dans OrderHeader
et OrderDetail
», donc j'ai essayé la requête suivante:
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();
dans difTOTOrderHeader
Je ne sais pas comment récupérer le champ TOTRGVS
à partir de OrderHeader
. J'ai essayé d'employer la clef mais ne peux obtenir aucun champ, juste des prolongements pour des méthodes de formatage.
Si vous pensez que il est difficile de réaliser ce but sans utiliser une boucle foreach, considérez combien plus il sera difficile de debug. Allez-y et utilisez une boucle si cela vous facilite la tâche. –