2010-02-08 6 views
0

Quelqu'un peut-il m'aider avec l'instruction Linq suivante? J'essaye de joindre 4 tables par Linq, grouper par la dernière table et additionner une propriété du premier.Linq Sum pour plusieurs jointures

var payments = (
       from payment in db.Payments 
       join payees in db.cmsMembers on payment.PayeeID equals payees.nodeId 
       join payeeGroups in db.cmsMember2MemberGroups on payees.nodeId equals payeeGroups.Member 
       join groups in db.umbracoNodes on payeeGroups.MemberGroup equals groups.id 
       group groups by new {groups.text, payment} into groupedPayments 
       select new 
       { 
        Group = groupedPayments.Key.text, 
        Count = groupedPayments.Count(), 
        Amount = groupedPayments.Sum(?) 
       } 
      ).ToList(); 

La question que je vais avoir est que dans le groupedPayments.Sum (..) Je n'appelle avoir accès à l'objet « groupes ». C'est très bien pour l'aspect Nom de groupe et compte mais le SUM doit être effectué sur la propriété payment.Amount.

+0

Hey, groupedPayments.Sum (i => paiement) ne fonctionne pas? –

Répondre

1

J'ai réussi à résoudre mon problème. Je n'avais pas réalisé que l'objet dans la déclaration de groupe deviendrait l'objet réel dans l'élément de groupe résultant. En modifiant la déclaration d'origine à ce qui suit:

group payment by groups into groupedPayments 

il semble que chaque instance de groupedPayments.Key dans l'instruction select correspond maintenant à la ligne de paiement qui est ce que je demandais.

Questions connexes