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 :

Requete ne retournant rien, mais table non vide. [Débutant]


Sujet :

Linq

  1. #1
    Membre habitué
    Inscrit en
    Février 2012
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 121
    Points : 157
    Points
    157
    Par défaut Requete ne retournant rien, mais table non vide.
    Bonjour à tous,

    Je développe en ce moment à titre personnel une application, utilisant EF et Linq.

    Au lancement de l'application, je lance une requete en base (sql server compact, crée avec vs 2012, et que j'ai rempli par mes soins) afin de remplir une listBox.

    Soucis : ma requête ne me retourne rien du tout : que faire ?

    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
    17
    18
     
     
            public static IList<DAO.Categorie> GetAllCategorie()
            {
                List<DAO.Categorie> lstCategorie = new List<DAO.Categorie>();
     
                using (var db = new Entities())
                {
                    IQueryable<Categorie> categories = from c in db.Categorie
                                                       select c;
     
                    foreach (DAO.Categorie item in lstCategorie)
                    {
                        lstCategorie = categories.ToList();
                    }
                }
                return lstCategorie;
            }
    A mon sens la requête est correcte, et je ne vois donc pas ce qui cloche ce niveau.
    Comme mes connaissances sur le sujet sont encore menues, je me dirige vers vous pour avoir de potentielles pistes ...


    Merci de votre aide.

    Error

  2. #2
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Citation Envoyé par Error407 Voir le message
    Soucis : ma requête ne me retourne rien du tout : que faire ?

    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
    17
    18
     
     
            public static IList<DAO.Categorie> GetAllCategorie()
            {
                List<DAO.Categorie> lstCategorie = new List<DAO.Categorie>();
     
                using (var db = new Entities())
                {
                    IQueryable<Categorie> categories = from c in db.Categorie
                                                       select c;
     
                    foreach (DAO.Categorie item in lstCategorie)
                    {
                        lstCategorie = categories.ToList();
                    }
                }
                return ;
            }
    Woo, mais ça saute aux yeux! Ton problème est dans le foreach. Tu dois parcourir le jeux d'enregistrement de ta requête linq i.e parcourir categories et non lstCategorie. cette dernière est toujours vide donc tu ne rentres même pas dans le corps de ton foreach. C'est donc tout à fait normal que ta listbox soit vide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach (DAO.Categorie item in lstCategorie) // tu dois parcourir  categories et non lstCategorienon 
       {
           lstCategorie = categories.ToList(); // ceci n'a aucun sens
       }
    N'oubliez pas le tag et

  3. #3
    Invité
    Invité(e)
    Par défaut
    calo a tout à fait raison dans son diagnostic du foreach. En revanche, il n'est pas nécessaire de parcourir "categories" avec un foreach car la méthode "ToList" fait tout le travail nécessaire.

    Il suffit d'un code tout simple pour faire ce que tu veux faire :

    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
    17
    18
    19
    20
    21
    22
    23
    public static IList<DAO.Categorie> GetAllCategorie()
            {
                //Cette variable locale est inutile
                //List<DAO.Categorie> lstCategorie = new List<DAO.Categorie>();
     
                using (var db = new Entities())
                {
                   //Pour ce que tu veux faire, "db.Categories" et
                   //"from c in db.Categories select c" sont parfaitement identiques
                   //autant prendre le plus court!
                   //IQueryable<Categorie> categories = from c in db.Categorie
                   //                                    select c;
     
                    //Boucle inutile, "ToList" fait tout le travail nécessaire!
                    //foreach (DAO.Categorie item in categories)
                    //{
                    //    lstCategorie.Add(item)
                    //}
     
                    return db.Categorie.ToList(); //C'est tout ce qu'il suffit de faire!
                }
                //return lstCategorie;
            }
    Explication : la méthode "ToList" renvoie une nouvelle instance de type "List" avec les éléments de "db.Categories".

  4. #4
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Tu as tout à fait raison Ph_Gr . Je me disais que j'oubliais d'ajouter quelque chose. Et tu as bien fait de le mentionner.
    N'oubliez pas le tag et

  5. #5
    Membre habitué
    Inscrit en
    Février 2012
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 121
    Points : 157
    Points
    157
    Par défaut
    oula ....


    c'était surement la fatigue, une que l'on revient dessus cela parait trés clair.

    Merci beaucoup,

    Résolu !

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

Discussions similaires

  1. Ajouter clé étrangère à table non vide sans erreur 1452?
    Par gb-ch dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 17/06/2018, 17h45
  2. Réponses: 4
    Dernier message: 05/08/2011, 17h19
  3. Tester si une requete ne retourne rien
    Par brigade dans le forum Langage
    Réponses: 2
    Dernier message: 02/12/2008, 22h58
  4. Réponses: 3
    Dernier message: 13/06/2007, 14h57
  5. tester si une requete ne retourne rien
    Par pierre2410 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 08/06/2007, 10h35

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