一、事件
最近做一项目,要求实现如下查询:
有三个表:论文(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)); }
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索分类
, 期刊管理
杂志
,以便于您获取更多的相关知识。
时间: 2024-08-17 20:18:46