2010-12-14 48 views
0

Je reçois une erreur "Référence d'objet non définie sur une instance d'un objet". lorsque vous essayez de sauvegarder tous les éléments d'une liste avec cette méthode.C# Enregistrement dans l'erreur de boucle

writer = new StreamWriter(saveBox.FileName); 
    foreach (var item in LstResults.Items.Cast<object>().Where(item => string.IsNullOrEmpty(item.ToString()))) 
        { 
         writer.Write(item.ToString().Trim() + ","); 
        } 
        writer.Close(); 

Qu'est-ce que je fais mal? La liste contient environ 80k articles.

+0

Comment cela est plus clair qu'une instruction if est au-delà de moi ... abus LINQ. –

+0

@Ed il me semble en fait plus clair que l'instruction 'if' équivalente (mais seulement légèrement). – Davy8

+0

et la trace de la pile est un secret ?? –

Répondre

5

ne devrait pas être ce

item => !string.IsNullOrEmpty(item.ToString()) 

pour cette boucle pour donner un sens? Si vous retirez des éléments ayant un résultat nullToString(), vous appelez Trim sur un objet nul.

+0

Oups, j'ai accidentellement édité le vôtre, Je vais laisser mes ajouts ici: S –

+0

merci pour l'ajout Matthew ;-) – BrokenGlass

1

Voici vos suspects:

  • SaveBox
  • article (un des éléments dans la liste)
  • le résultat de item.ToString (très improbable)

Si l'un des éléments de la ListBox est null, vous obtenez une exception sur ce premier appel ToString.