【发布时间】:2020-08-08 09:34:09
【问题描述】:
我有几个表,我试图从尽可能少的查询中提取信息。我有一个主表timelineinfo,两个连接表junc_timelineinfo_officer 和junc_timelineinfo_subject,还有另外两个表officer 和subject。除了主键 Id 的名称外,officer 和 subject 是相同的。我的目标是:
- 给定一个日期,从日期匹配的
timelineinfo获取一个ID - 在联结表中使用该 ID 来查找匹配的
IdSubject和IdOfficer - 使用
IdSubjects 和IdOfficers 获取具有这些ID 的行。
我已经使用以下代码完成了第一步:
var Events = await _context.Timelineinfo.Where(t => t.Date.Equals(date)).ToListAsync();
我认为我已经完成了第二步和第三步:
var SubjectIds = await _context.Junc_Timelineinfo_Subject
.Where(id => id.IdTimelineinfo.Equals(Event.IdTimelineInfo))
.Select(i => i.IdSubject)
.ToListAsync();
var OfficerIds = await _context.Junc_Timelineinfo_Officer
.Where(id => id.IdTimelineinfo.Equals(Event.IdTimelineInfo))
.Select(i => i.IdOfficer)
.ToListAsync();
//Step three
var Subjects = await _context.Subjects
.Where(i => i.IdSubject.Equals(SubjectIds))
.ToListAsync();
var Officers = await _context.Officers
.Where(i => i.IdOfficer.Equals(OfficerIds))
.ToListAsync();
但这很快就会变得笨拙并使用一堆查询。如何将其简化为尽可能少的查询?
【问题讨论】:
标签: c# mysql entity-framework linq