Queries with local collections are not supported2012-02-11 博客园 飞得更高一、事件最近做一项目,要求实现如下查询:有三个表:论文(Paper),期刊(Magazine),期刊学科分类(MagazineSubjectClass),三者关系为:论文和期刊的关系为一对多(一篇论文对应一个期刊,一个期刊对应多篇论文),期刊和期刊分类的关系是一对多(一个期刊对应多个分类),如图:

要求实现的查询如下:给出一“学科分类”集合(字符串数组),查询发表在“学科分类”属于这个集合中的杂志上的论文。二、响应事件我的思路如下:根据学科分类找出符合条件的杂志根据杂志找出符合条件的论文 于是,我写下如下linq语句:
IQueryable<Magazine> magazines = database.Magazines.AsQueryable();
if (paperQueryInformation.MagazineQueryInformation.SubjectClass != null && paperQueryInformation.MagazineQueryInformation.SubjectClass.Length != 0)
{
magazines = database.MagazineSubjectClasses
.Where(q => paperQueryInformation.MagazineQueryInformation.SubjectClass.Contains(q.SubjectClass))
.Select(q => q.Magazine)
.Distinct();
query = query
.Where(q => magazines.Contains(q.Magazine));
}