2009-06-15 17 views
5

Usiłuję execute przykładowy kod LINQ do JSON (wymienionych poniżej), ale daje mi następujący błądLINQ do JSON: InvalidOperationException: Lambda parametr nie w zakres

Stos śledzenia:

[InvalidOperationException: Lambda parametr nie w zakres]

Kod ja wykonywania jest:

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

Również po usunięciu linii "new JProperty (" name ", p.SoftwareName)" kod jest wykonywany perfekcyjnie.

Dlaczego?

+1

Czy możesz opublikować stacktrace swojego wyjątku? Jestem prawie pewien, że błąd nie pochodzi z Json.NET. –

Odpowiedz

0

Linq może spróbować załadować oprogramowanie nazwa. Spróbuj użyć DTO i szybko załaduj nazwę parametru przed utworzeniem nowego obiektu.

3

Próbowałem tego i pracował dla mnie ...

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


      ); 

nie wiem powód!

Czy możemy użyć tylko struktury danych "List" w powyższym miejscu?