2009-06-15 4 views
5

에 나는이 JSON (아래에서 설명)에 LINQ의 샘플 코드를 실행하려하지 그러나 그것은 나에게 다음과 같은 오류LINQ 람다 매개 변수는 범위

스택 추적주고있다 :

을 [InvalidOperationException이 : 람다 파라미터없는 범위]가 실행하고 I

코드 :

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

또한 "새로운 JProperty ("name ", p.SoftwareName)"줄을 제거하면 코드가 완벽하게 실행됩니다.

왜?

+1

예외 스택 추적을 게시 할 수 있습니까? 나는 오류가 Json.NET에서 오지 않는다고 확신한다. –

답변

0

Linq가 SoftwareName을 지연로드하려고 시도 할 수 있습니다. 새 객체를 만들기 전에 DTO를 사용하고 매개 변수 이름을 eager-load 해보십시오.

3

나는이 시도하고 나를 위해 일한 ...

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


      ); 

나는 이유를 잘 모릅니다!

우리는 위의 "목록"데이터 구조 만 사용할 수 있습니까?