Problème dans un foreach

Résolu
Jojo092 Messages postés 137 Date d'inscription samedi 24 septembre 2005 Statut Membre Dernière intervention 12 avril 2013 - 4 mars 2010 à 17:57
Jojo092 Messages postés 137 Date d'inscription samedi 24 septembre 2005 Statut Membre Dernière intervention 12 avril 2013 - 5 mars 2010 à 12:20
Bonjour tout le monde,

J'ai un petit problème avec le message d'erreur suivant "la référence d'objet n'est pas définie à une instance d'un objet" dans un foreach.

Voici le code:

List<LangueInfoResponse> langueInfoResponses = new List<LangueInfoResponse>();
            LangueInfoResponse langueInfoResponse = new LangueInfoResponse();
            try
            {                
                Langue langue = new Langue();
                
                Dao dao = new Dao();
                List<Langue> langues = dao.FindLangues(langue);

                if (langues.Count != 0)
                {
                    foreach (Langue langueList in langues)
                    {
                        //l'erreur arrive dès cette ligne
                        langueInfoResponse.LangueInfo.Id = langueList.Fields["Id"];
                        langueInfoResponse.LangueInfo.Langue = langueList.Fields["Langue"];
                        langueInfoResponse.Successful = true;

                        langueInfoResponses.Add(langueInfoResponse);
                    }
                }
                //...


En fait pour expliquer, "langueInfoResponse" est une structure de réponse qui contient un booléen et un string pour les message, ainsi qu'une autre structure "LangueInfo" qui contient tous les champs de ma base de donnée. Ce que je ne comprends pas, c'est pourquoi j'ai ce message d'erreur alors que j'instancie bien toutes mes variables avant le "try"...

Si quelqu'un pourrait m'apporter son aide pour résoudre ce problème, ca serait sympa!!

Merci beaucoup!!!!

4 réponses

Jojo092 Messages postés 137 Date d'inscription samedi 24 septembre 2005 Statut Membre Dernière intervention 12 avril 2013
5 mars 2010 à 12:20
Je vous remercie à tous les 2 pour vos réponses, j'ai modifié mon code pour utiliser directement la structure de donnée LangueInfo. Voilà le code au cas où ca pourrait servir un jour.

List<LangueInfo> langueInfos = new List<LangueInfo>();      
Langue langue = new Langue();
Dao dao = new Dao();
List<Langue> langues = dao.FindLangues(langue);

if (langues.Count != 0)
{
    foreach (Langue langueList in langues)
    {
        LangueInfo langueInfo = new LangueInfo();
        langueInfo.Id = langueList.Fields["Id"];
        langueInfo.Langue = langueList.Fields["Langue"];
        langueInfos.Add(langueInfo);
    }
}


Et maintenant tout marche bien, je récupère bien toutes les données de ma base.
Encore merci pour votre aide
3
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
5 mars 2010 à 09:40
Bonjour,

Et pourquoi ne pas mettre un point d'arrêt et regarder avec le "watcher" tes objets ?
Je miserai bien sur
langueInfoResponse.LangueInfo = null

ou
langueList.Fields = null


Par contre, je ne comprend pour pourquoi passer par un tableau de champs (langueList.Fields) ?
N'aurais-tu pas mieux fait de directement passer par un DataSet et remplir tes réponses ?

Bonne journée,

Billou_13

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
Jojo092 Messages postés 137 Date d'inscription samedi 24 septembre 2005 Statut Membre Dernière intervention 12 avril 2013
5 mars 2010 à 10:23
Bonjour,

merci pour ta réponse. Pour répondre à ta question du dataset, ce n'est pas un projet personnel, mais professionnel, ce n'est donc pas moi qui ai choisi de passer un Dictionnary. Personnellement, je serais aussi passé par un dataset, mais bon. Je vais voir de plus près ce que tu m'as donné comme piste.

Merci encore de ta réponse.
0
BunoCS Messages postés 15331 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 7 décembre 2022 103
5 mars 2010 à 11:00
Hello,

Langue langue = new Langue();
Dao dao = new Dao();
List<Langue> langues = dao.FindLangues(langue);

Je suppose que toutes les inits sont faites dans les contructeurs

if (langues.Count != 0)
{
  foreach (Langue langueList in langues)
[...]

Pas besoin de vérifier la taille: si c'est vide, tu ne passeras pas dans le foreach
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0