IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

problème de cast avec dynamic et type anonyme et LINQ


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Par défaut problème de cast avec dynamic et type anonyme et LINQ
    Bonjour,
    Quand j'essaye de calculer ma variable result, je me retrouve avec l'erreur suivante : "Cannot implicitly convert type 'double' to 'int'. An explicit conversion exists (are you missing a cast?)"
    Avez-vous une idée de la raison pour laquelle je n'arrive pas à sommer mes premium s'il vous plaît ? D'où il trouve un int ?
    Voici mon code qui utilise les dynamics et les types anomymes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Output {
    	public IEnumerable<dynamic> list;
    	public Output(IEnumerable<dynamic> list) {
    		this.list = list;}}
    double totoPremium = 0.00052500000000000008; double titiPremium = 1140512693.4; double tutuPremium = 170329599.45; double tataPremium = 0.0;
    var list = new[] { 
    	new { premium = totoPremium }, new { premium = titiPremium }, new { premium = tutuPremium }, new { premium = tataPremium }
    }.ToList();
    Output output = new Output(list);
    double result = output.list.Sum(x => x.premium);
    Merci pour votre aide,

  2. #2
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Par défaut
    Je n'ai plus l'erreur si je remplace mon LINQ Sum par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    double result = 0;
    for (int i = 0; i < output.list.Count(); i++) {
    	result += output.list.ElementAt(i).premium;
    }
    Et là je ne comprends pas... Merci de me dire si vous savez quel est le problème ici pour utiliser LINQ?

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Par défaut
    J'ai corrigé l'erreur en castant explicitement premium en double :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double result = output.list.Sum(x => (double)x.premium);
    Ce que je ne comprends pas c'est que lorsque je mets un point d'arrêt et que je regarde le contenu de output.list, il voit bien qu'il s'agit de double (il met dynamic double). Pourquoi est-ce qu'il faut donc caster explicitement ici?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 19/08/2009, 18h46
  2. [débutant] Problème de Cast avec des vector
    Par syl55 dans le forum Langage
    Réponses: 9
    Dernier message: 20/05/2009, 10h04
  3. problème de cast avec CORBA
    Par Irafelo dans le forum Langage
    Réponses: 3
    Dernier message: 12/12/2008, 17h02
  4. Problème de cast avec un wxMenu
    Par mister3957 dans le forum wxWidgets
    Réponses: 3
    Dernier message: 09/09/2008, 10h41
  5. Problème de cast avec l'outil de génération de requetes VS2005
    Par rabddoul dans le forum Accès aux données
    Réponses: 1
    Dernier message: 22/02/2007, 13h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo