2012-09-28 3 views
0

Impossible de faire fonctionner cela. Vous voulez obtenir la somme de tous les montants int la base de données de la déclaration LINQ suivante:Somme provenant de la requête LINQ

 Dim currentPaid = From a In db.Payments 
          Where a.ForJob = id 
          Select a.Amount 

     Dim totalPaid As Double = currentPaid.Sum() 

Comme il souligne la deuxième statment et dit: résolution de surcharge a échoué car aucun accès « Somme » accepte ce nombre d'attributs.

+0

De quel type est 'currentPaid'? Êtes-vous sûr que le message d'erreur est "... nombre d'attributs" au lieu de "nombre d'arguments"? –

+0

currentPaid est la requête LINQ ci-dessus? Je ne sais pas si je devrais faire la somme dans l'instruction LINQ – NickP

+2

Quel type est 'currentPaid', est-ce un' IEnumerable (Of String) ',' IEnumerable (Of Double) 'ou quoi d'autre? Essayez de le déclarer avec le type et vous pourriez voir un avertissement du compilateur. Si 'a.Amount' est f.e. une chaîne vous obtiendrez l'exception puisque vous ne pouvez pas additionner une chaîne –

Répondre

2

posé une autre question avec le code et quelqu'un a répondu à ma question exactement si la réponse est ci-dessous:

Dim totalPaid = db.Payments.Where(Function(a) a.ForJob = jobId).Sum(Function(a) a.Amount) 
+1

Salut, alors peut-être que vous devriez supprimer _this_ question. Cela ne provoque que des doublons et des encombrements. Améliorer une question existante est la voie à suivre. –

0
Dim sum = (From a In db.Payments Where a.ForJob = id Select a.Amount).Sum(); 
+0

J'ai maintenant une erreur Erreur: La variable de plage 'Amount' cache une variable dans un bloc englobant ou une variable de plage précédemment définie dans l'expression de requête. – NickP