2010-10-28 9 views
1

J'ai le code C# suivant et je ne sais pas pourquoi cela ne fonctionne pas (j'obtiens une erreur NullReferenceException). Si je définis la recette comme nouvelle liste() tout commence à fonctionner correctement.C# XML ToList à ToList

foreach (XElement element in document.Descendants("vegetables")) 
     { 
      VegetablesList = (
       from vegetables in element.Elements() 
       select new FoodItem() 
       { 
        Name = (vegetables.Element("name") == null) ? null : vegetables.Element("name").Value.ToString(), 
        Bcg = (vegetables.Element("bcg") == null) ? null : vegetables.Element("bcg").Value.ToString(), 
        Info = (vegetables.Element("info") == null) ? null : vegetables.Element("info").Value.ToString(), 
        Recipes = (
         from recipes in element.Element("recipes").Elements() 
         select new Recipe() 
         { 
          Name = (recipes.Element("name") == null) ? null : recipes.Element("name").Value.ToString(), 
          Text = (recipes.Element("text") == null) ? null : recipes.Element("text").Value.ToString() 
         } 
        ).ToList() 
       } 
      ).ToList(); 
      VegetablesListBox.ItemsSource = VegetablesList; 
     } 

Merci pour votre aide.

+0

Quelle ligne de code vous donne l'exception de référence nulle? –

+0

Pourquoi attribuez-vous à plusieurs reprises 'VegetablesList' à' ItemsSource'? – AnthonyWJones

+0

BTW utilise 'Name = (string) recipes.Element (" name ")' cela vous faciliterait la lecture du code. – AnthonyWJones

Répondre

0

Je suppose que element.Element("recipes") renvoie null, ce qui signifie que l'élément recipes n'existe pas pour cette itération.

+0

Merci! Correction en changeant element.Element ("recettes"). Elements() à vegetables.Element ("recettes"). Elements() –

+0

De rien. –

+0

Null est une douleur dans le cul de Linq à XML. Je me bats constamment pour ça. –