我已经尝试了以下内容,并且每位导师都将其归还给我
List<Tutor>tutorsList = tutors.ToList();
此外,我试图只选择具有特定主题的导师(导师 - 主题是n:n)
Subject subjectEntity = subjects.Where(s => s.Name == input).FirstOrDefault();
List<Tutor>tutorsList = tutors.Where(t => t.Subjects.Contains(subjectEntity)) .ToList();
因此,我的tutorsList
为空,即使subjectEntity
正确(我将其打印到控制台)。
但是当我循环每个导师并打印主题时,会有一个主题为input
的导师。
有什么想法吗?
答案 0 :(得分:1)
在处理内部集合时使用Any
简化为一行。
var tutorsList = tutors.Where(t => t.Subjects
.Any(s => s.Name == input)).ToList();
答案 1 :(得分:1)
如果您还有id,则可以执行以下操作:
Subject subjectEntity = subjects
.Where(s => s.Name == input)
.FirstOrDefault();
List<Tutor> tutorsList = tutors
.Where(t => t.Subjects
.Select(x => x.SubjectId)
.Contains(subjectEntity.SubjectId)
)
.ToList();
如果没有,您可以尝试在单个查询中执行此操作
List<Tutor> tutorsList = tutors
.Where(t => t.Subjects.Any(x => x.Name == input))
.ToList()
答案 2 :(得分:1)
尝试以下
Subject subjectEntity = subjects.Where(s => s.Name == input).FirstOrDefault();
List<Tutor>tutorsList = tutors.Where(t => t.Subjects.Any(x=>x.UniqueField==subjectEntity.UniqueField)).ToList();