2009-06-15 17 views
5

J'essaie Execute le code échantillon de LINQ à JSON (mentionné ci-dessous), mais il me donne erreur suivantLINQ to JSON: InvalidOperationException: Lambda Paramètre non compris dans

Stack Trace:

[InvalidOperationException: Lambda Paramètre non portée]

code J'exécute est:

 JObject rss = 
      new JObject(

       new JProperty("id", "James Newton-King"), 
       new JProperty("name", "http://james.newtonking.com"), 
       new JProperty("data", "James Newton-King's blog."), 
       new JProperty("children", 
        new JArray(
        from p in mwsysbot.Software 
        where p.SoftwareName == name 
        select new JObject(       
         new JProperty("id",p.SoftwareUUID), 
         new JProperty("name", p.SoftwareName)   
        ) 
       ) 
       ) 
       ); 

Aussi lorsque je supprime la ligne "new JProperty (" nom ", p.SoftwareName)" le code s'exécute parfaitement.

Pourquoi?

+1

Pourriez-vous publier une pile de vos exceptions? Je suis sûr que cette erreur ne vient pas de Json.NET. –

Répondre

0

Linq peut essayer de charger par chargement le nom de logiciel. Essayez d'utiliser un DTO et chargez avec empressement le nom du paramètre avant de créer le nouvel objet.

3

J'ai essayé et ça a marché pour moi ...

 IQueryable<Software> soft = (from s in mwsysbot.Software 
                select s).ToList(); 

JObject rss = 
      new JObject(
        new JProperty("id", "James Newton-King"), 
        new JProperty("name", "http://james.newtonking.com"), 
        new JProperty("data", "James Newton-King's blog."), 
        new JProperty("children", new JArray(
         from m in soft 
         select new JObject(
          new JProperty("id",m.SoftwareName), 
          new JProperty("name", m.SoftwareName), 
          new JProperty("children",new JArray()) 
          ) 
         )) 


      ); 

Je ne sais pas la raison! Est-ce comme si nous ne pouvions utiliser que la structure de données "List" à l'emplacement ci-dessus?