Linq子查询 - 在我尝试迭代结果集时立即获取InvalidOperationException

时间:2011-04-06 18:14:09

标签: c# linq

代码将编译甚至运行,但只要我对结果做任何事情,我就会得到InvalidOperationException或NotSupportedException

  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

2 个答案:

答案 0 :(得分:0)

也许我在这里遗漏了一些东西,但是你要回复评分为&gt的电影; -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;

真的需要更多信息来帮助我们

答案 1 :(得分:0)

从抛出错误的地方,您可以确定其原因是使用ToArray()评估查询。

LINQ to SQL支持嵌套查询,因此我最好的猜测是你正在执行Contains(null)并且它不会转换为SQL,因此当IQueryProvider尝试评估时会引发错误表达方式。