没有简单查询的结果

时间:2014-08-29 10:25:36

标签: c# linq entity-framework

我已经尝试了以下内容,并且每位导师都将其归还给我

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的导师。

有什么想法吗?

3 个答案:

答案 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();