2011-04-06 2 views
0

코드가 컴파일되고 실행 되기는하지만 결과에 아무런 변화가 없으면 InvalidOperationException 또는 NotSupportedException이 표시됩니다.Linq 하위 쿼리 - 결과 집합을 반복하여 반복하려고하면 InvalidOperationException이 발생합니다.

var movies = from m in data.Movies 
         where m.Rating > -1 && m.GenresLinks.Contains 
         (
         (from g in data.GenresLinks 
          where g.GenreID == queryGenre select g).FirstOrDefault() 
         ) 
         orderby m.InsertedIn descending 
         select m; 


       return movies.ToArray();//Exception here 

감사합니다.

+1

어떤 종류의 LINQ입니까? LINQ to SQL, LINQ to Objects? –

+0

LINQ-To-SQL 쿼리는 사용하려고하거나 결과의 "받는 사람"메서드 중 하나를 호출 할 때까지 실행되지 않습니다. 받고있는 실제 예외 텍스트를 제공해야합니다. –

+0

예외에 대한 완전한 예외 세부 사항을 알려주십시오. InvalidOperationException ** 또는 ** NotSupportedException 중 하나만 가져올 수 있습니다. 동시에 둘 다 불가능합니다. 기타 : LINQ2SQL을 사용하고 있습니까? 엔티티 프레임 워크? 개체에 대한 LINQ? –

답변

0

아마도 여기에 뭔가 빠졌지 만 등급이> 1이고 queryGenre 장르의 영화를 반환하는 이유는 무엇입니까?

var movies = from m in data.Movies 
      where m.Rating > -1 && 
        m.GenreLinks.Any(gr => gr.GenreID == queryGenre) 
      orderby m.InsteredIn desc 
      select m; 

정말 오류가 발생 어디서

+0

제안에 감사드립니다. Mirko, 내가 말한 것처럼 확실하지 않았습니다. GenreLinks는 Movies와 Genres 테이블을 연결하는 테이블의 목록입니다. 그래서 각 영화는 여러 장르를 가질 수 있습니다. 희망이 있습니다. – Esh

+0

방금 ​​테스트하고 작동 중입니다. 정말 고마워요! – Esh

0

, 당신은 그 원인이 ToArray()으로 쿼리를 평가하는 것을 확인할 수 있지만 여기에 도움이 될 더 많은 정보가 필요합니다.

LINQ to SQL은 중첩 된 쿼리를 지원하므로 Contains(null)을 수행 중이며 SQL로 변환되지 않으므로 IQueryProvider이 식을 계산할 때 오류가 발생합니다.

관련 문제