2009-06-15 7 views
5

sto cercando il eseguire il codice di esempio di LINQ to JSON (di cui sotto), ma mi sta dando seguente erroreLINQ to JSON: InvalidOperationException: Lambda parametro non in ambito

dello stack:

[InvalidOperationException: Lambda parametro non in ambito]

Codice sto eseguendo è:

 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)   
        ) 
       ) 
       ) 
       ); 

Anche quando rimuovo la riga "nuova JProperty (" nome ", p.SoftwareName)" il codice viene eseguito perfettamente.

Perché?

+1

Potresti pubblicare uno stacktrace della tua eccezione? Sono abbastanza sicuro che l'errore non provenga da Json.NET. –

risposta

0

Linq potrebbe provare a caricare il software in modo pigro. Prova ad usare un DTO e ad assumere il nome del parametro prima di creare il nuovo oggetto.

3

Ho provato questo e ha funzionato per me ...

 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()) 
          ) 
         )) 


      ); 

Non so il motivo!

È possibile utilizzare solo la struttura dati "Elenco" nel luogo in alto?