2010-11-17 4 views
2

Je tire deux valeurs d'une base de données MYSQL. J'ai un int et un décimal ... comment puis-je les ajouter?Ajouter deux IQueryables (int/decimal) en C#

Actuellement, mon code est:

orderTotal += cartItem.Count * storeDB.Designs.Select(p => p.Price); 

// countItem.Count = int 
// storeDB.select = decimal 

Comment puis-je ajouter ces? J'ai essayé de lancer le type dans tous les sens. Toute aide est appréciée!

+0

édité pour corriger la disposition de 'code' et le style grammatical. – jcolebrand

+0

@ user498351 bienvenue à StackOverflow, j'espère que vous le trouverez à votre goût. – jcolebrand

+0

Il est vraiment difficile de dire ce qui se passe ici. S'il vous plaît montrez-nous à quoi ressemblent les tableaux, donnez-nous quelques exemples de données et quel résultat vous recherchez. –

Répondre

2

Le résultat de storeDB.Designs.Select(p => p.Price) n'est pas un nombre décimal. C'est un IEnumerable<decimal>. Votre logique devrait ressembler à ceci:

orderTotal += cartItem.Count * 
       storeDb.Designs.First(d => d.Id == cartItem.Id).Price; 

Gardez à l'esprit que First jetteront s'il n'y a pas un élément dans la base de données avec le droit id (cartItem.Id).

+0

Not if Prix est un nombre décimal. Ce serait un IQueryable . La méthode Select est une projection.^Furtif édité. – Dismissile

+0

@Dississile, ouais j'ai remarqué et réparé avant que quelqu'un ne le remarque (ou alors j'ai pensé ;-) –

3

.Select() renvoie une collection qui ne peut pas être convertie en l'opérande d'une multiplication, même si elle ne contient qu'un seul élément. Jetez un oeil à FirstOrDefault() et ses parents, qui renvoient des scalaires.

Si vous attend plus d'une valeur, vous aurez besoin d'agréger Designs avec quelque chose comme Sum() avant de multiplier le résultat.