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

Linq Discussion :

Problème de cast avec LinqToSQL


Sujet :

Linq

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 2
    Par défaut Problème de cast avec LinqToSQL
    Bonjour à tous !

    Dans le cadre d'un projet de groupe obligatoire, je dois coder une application en C#.

    Vous pouvez voir mon souci par ici, ainsi que le code associé : http://pastebin.com/DEtRbm5w

    J'espère que vous pourrez m'aider !

    Grand merci.
    Cordialement,
    Xat`

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Je ne suis pas spécialiste mais vu l'erreur voici ce que je pense.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var studentWithoutClass = from u in bdd.users
                              where u.est_etudiant == true && u.id_classe == null
                              select new
                              {
                                    u.id_user,
                                    Fullname = u.nom_user + " " + u.prenom_user
                              };
    Avec ce code tu récupères un ensemble d'objets dont le type est anonyme (select new { ... }). Ce type est composé d'un entier et d'une chaîne.

    Lorsque dans ta boucle tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach (users userSelected in list_student_classe.SelectedItems)
    {
        ...
    }
    Tu essayes alors de caster un objet de type anonyme vers le type users ce qui n'est évidemment pas possible, d'où l'erreur.

    Les types anonymes ne sont pas faits/adaptés pour ça je pense (un spécialiste confirmera peut être). Le plus simple serait probablement de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var studentWithoutClass = from u in bdd.users
                              where u.est_etudiant == true && u.id_classe == null
                              select u;
    et d'ajouter une propriété FullName à la classe user. Cette dernière est certainement une classe partielle. Tu peux donc la compléter dans un fichier à part sans risque de perdre tes ajouts si tu régénères par la suite les classes, car je suppose qu'elles sont générées automatiquement ^^

  3. #3
    Membre expérimenté Avatar de el_pedro
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 200
    Par défaut
    Je suis pas l'expert

    Je ne comprend pas pourquoi tu balance quelques infso de tes students dans un tableau. Au final tu ne récupèrera qu'un type IEnumerable<object[]>, complètement incastable.

    Si on suit le nom de ta collection studentWithoutClass, StormimOn à la solution parfaite, nous récupérons un type IEnomerable<users> (nous avons notre expert).

  4. #4
    Membre très actif Avatar de oussi
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 192
    Par défaut
    Salut,
    C'est normal car l'objet sélectionné dans une listbox est String et toi tu veux le caster en type Users, personnelement j'aurais créer une list générique que je remplirai de la même façon que la Listbox et ensuite je travail avec les index.

    Voici un petit code pour illustrer mon idée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    //déclarer une liste générique
    List<users> maList = new List<users>();
    var studentWithoutClass = from u in bdd.users
                              where u.est_etudiant == true && u.id_classe == null
                              select new
                              {
                                    u.id_user,
                                    Fullname = u.nom_user + " " + u.prenom_user
                              };
    //remplissage de la listbox
    //remplissage de la liste generique
    foreach (users item in studentWithoutClass)
    {
          maList.Add(item);
    }
    Et pour parcourir les users sélectionnés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    foreach (int index in list_student_classe.SelectedIndices)
    {
        //on déclare un objet user
        users usr = new users();
        usr = maList[index];
        MessageBox.Show(usr.id_user + " " + usr.Fullname);
    }
    Voila pour ma solution qui ne reste qu'une modeste proposition.

    @++

  5. #5
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Citation Envoyé par oussi Voir le message
    C'est normal car l'objet sélectionné dans une listbox est String et toi tu veux le caster en type Users
    Non car il utilise le DataBinding puisqu'il affecte à la DataSource de la ListBox sa liste d'utilisateur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list_student_classe.DataSource = studentWithoutClass;
    La propriété SelectedItem de la ListBox renvoie alors l'objet sélectionné par rapport à la DataSource. Ici il utilise une liste d'utilisateur (via un type anonyme) comme source de données, donc SelectedItem renverra un objet de type anonyme correspondant à la sélection dans la liste, et non un string.

  6. #6
    Membre expérimenté Avatar de el_pedro
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 200
    Par défaut
    Vrai.

    Il suffit donc de faire ceci pour remplir la liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var studentWithoutClass = from u in bdd.users where u.est_etudiant == true && u.id_classe == null select u;
                myListBox.DataSource = studentWithoutClass;
    Et ceci pour récupérer l'élément sélectionné (sans oublié de le caster) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    users selectedUser = (users)myListBox.SelectedItem;

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

Discussions similaires

  1. problème requête CAST avec AND
    Par kalira dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 28/07/2010, 16h37
  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