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 :

First() sur une collection [Débutant]


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 57
    Points : 57
    Points
    57
    Par défaut First() sur une collection
    Bonjour,

    Voila , j'ai ma

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table A -- > idA nomA Collection de B
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table B -- > idB nomB Collection de A
    Via une requête je sélectionne un élément de ma table A et j'aimerais l'affiché, je l'ajoute dans une liste que j'affiche après.

    je fait donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maListe.Add(resultatDeMaRequéte.idA, resultatDeMaRequéte.nomA, resultatDeMaRequéte.B.Fisrt().idB);
    Cela me renvoi toujours "L'exception EntityCommandExecutionException n'a pas été gérée". De meme avec le FirstOrDefault(). Y a t-il au autre moyen de procédé ?

    Cordialement, jour.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Points : 576
    Points
    576
    Par défaut
    Bonjour,

    Dans votre code vous avez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maListe.Add(resultatDeMaRequéte.idA, resultatDeMaRequéte.nomA, resultatDeMaRequéte.B.Fisrt().idB);
    avec les resultat des requête pouvant être null.
    si le resultat est null resultatDeMaRequéte.ida, resultatDeMaRequéte.b.idb etc. plante.

    Essayer quelque chose dans ce genre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    int? A = resultatDeMaRequéte == null ? null : resultatDeMaRequéte.ida;
    string B =  resultatDeMaRequéte == null ? "": resultatDeMaRequéte.nomA;
    monobject Cintermediaire = resultatDeMaRequéte == null ? null : resultatDeMaRequéte.B.FisrtOrEmpty();
    int? C = Cintermediaire == null? null : Cintermediaire.idb;
    maList.Add(A, C, C);
    A = resultatDeMaRequéte == null ? null : resultatDeMaRequéte.ida signifie

    Si (resultatDeMaRequéte == nul) A = null
    else A = resultatDeMaRequéte.ida

    J'espère que cela pourras vous aider.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Points : 1 056
    Points
    1 056
    Par défaut
    Citation Envoyé par jourzebest Voir le message
    Cela me renvoi toujours "L'exception EntityCommandExecutionException n'a pas été gérée". De meme avec le FirstOrDefault(). Y a t-il au autre moyen de procédé ?
    Cordialement, jour.
    Au lieu de nous montrer des associations entre des tables "abstraite" (Table A, Table B, Colonne A, Colonne B).
    Soit plus concret, montre nous des entités proche de ton réel modèle (par exemple hier on a pu mieux t'aider quand tu nous as montré du concret...)

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Points : 576
    Points
    576
    Par défaut
    Si vous avez protéger votre Add des "resultatDeMaRequéte == null", alors ce doit être votre requête qui plante.


    essayer de protéger le requête (try-catch) pour au moins vérifier que l'erreur vient de la query.

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 57
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par katkiller Voir le message
    Au lieu de nous montrer des associations entre des tables "abstraite" (Table A, Table B, Colonne A, Colonne B).
    Soit plus concret, montre nous des entités proche de ton réel modèle (par exemple hier on a pu mieux t'aider quand tu nous as montré du concret...)
    Bonjour,

    Merci Jean-François et katkiller de prendre le temps de me répondre

    Je schématise pour facilité les réponse, et qu'on m'explique la théorie, pour que de mon coté j'apprenne le concret.
    Mais il est vrai que mes messages sont assez vague.

    Donc voici le bout de code en particulier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
                        int year = int.Parse(txtCritére.Text);                    
                        var result = from st in this._cad.STAGE
                                     where (st.DATE_DEBUT_STAGE.HasValue ? st.DATE_DEBUT_STAGE.Value.Year :0)== year
                                     select new{st.ENTREPRISE, st.DATE_DEBUT_STAGE, st.MAITRE, st.ENTREPRISE.DIRIGEANT};
     
                        foreach (var uneVar in result)
                        {
                            reslutatRequete.Add(uneVar.ENTREPRISE.RAIS_SOCIAL_ENTREPRISE + uneVar.ENTREPRISE.DIRIGEANT.First().NOM_DIRIGEANT);
                        }
    Je ne peut pas utilisé le First() dans un foreach ? Et j'ai essayé en mettant une condition ou avec un FirstOrDefault, même erreur.

    Encore merci.

    Cordialement, jour.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Points : 1 056
    Points
    1 056
    Par défaut
    L'exception que tu obtiens possède une propriété InnerException, qui désigne l'exception sous-jacente. Quel est son message ?

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 57
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par katkiller Voir le message
    L'exception que tu obtiens possède une propriété InnerException, qui désigne l'exception sous-jacente. Quel est son message ?
    "There is already an open DataReader associated with this Connection which must be closed fisrt"

    je ne peut donc pas utilisé le first() dans le foreach() ?

  8. #8
    Membre éprouvé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Points : 1 056
    Points
    1 056
    Par défaut
    3 Solutions :

    1. Activer MARS :
      Activation des ensembles de résultats actifs multiples (MARS)
      Rajouter dans ta connectionstring :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      MultipleActiveResultSets=True
    2. Faire un ToList() sur ta variable "result".
    3. Sinon fermer et réouvrir ton DbContext.

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 57
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par katkiller Voir le message
    3 Solutions :

    1. Activer MARS :
      Activation des ensembles de résultats actifs multiples (MARS)
      Rajouter dans ta connectionstring :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      MultipleActiveResultSets=True
    2. Faire un ToList() sur ta variable "result".
    3. Sinon fermer et réouvrir ton DbContext.
    Je vais opter pour le plus simple, le ToList().

    Merci a vous deux ..enfin encore merci KatKiller

  10. #10
    Membre confirmé

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 244
    Points : 574
    Points
    574
    Par défaut
    Hello,
    Comme tu nous sollicites pour avoir des conseils généraux, je profite de ce post pour t'en donner un : j'ai vu dans tes posts précédents que tu utilisais des ArrayList ou autres Hashtable. Oublie-les et va faire un tour du côté de System.Collections.Generic. Utilise des collections génériques, crée des objets spécialisés, cela améliorera la lisibilité, la maintenabilité, la robustesse de ton code.
    "C'est tellement merdique que toute modification est une amélioration !"

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 57
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par plume13 Voir le message
    Hello,
    Comme tu nous sollicites pour avoir des conseils généraux, je profite de ce post pour t'en donner un : j'ai vu dans tes posts précédents que tu utilisais des ArrayList ou autres Hashtable. Oublie-les et va faire un tour du côté de System.Collections.Generic. Utilise des collections génériques, crée des objets spécialisés, cela améliorera la lisibilité, la maintenabilité, la robustesse de ton code.
    Bonjour,

    Merci du conseil, je vais allez jeter un œil, j'en ai déja utilisé mais j'approfondirais ca dans mon prochain projet, celui ci je doit le rendre en fin de semaine :p

    Cordialement, Jour

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

Discussions similaires

  1. tri alphabétique sur une collection
    Par samtheh dans le forum VBA Access
    Réponses: 6
    Dernier message: 18/06/2007, 14h50
  2. Probleme de scope sur une collection
    Par ataya dans le forum Struts 1
    Réponses: 10
    Dernier message: 23/02/2007, 19h19
  3. VBNET : Agir sur une collection de contrôles ?
    Par VinZent dans le forum Windows Forms
    Réponses: 3
    Dernier message: 12/11/2006, 09h01
  4. Réponses: 1
    Dernier message: 25/10/2006, 13h41
  5. [Struts] <logic:iterate> sur une collection d objets c
    Par trax020 dans le forum Struts 1
    Réponses: 2
    Dernier message: 12/05/2005, 00h11

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