Преобразование LINQ в сущность сущности с помощью not not в лямбда-выражение - PullRequest
2 голосов
/ 18 декабря 2011

У меня есть три объекта, как показано ниже.

Student { StudentID, Name, Age } 

Parent { ParentID, Name, Age } 

StudentParent { StudentParentID, StudentID, ParentID }

Мне нужно получить список учащихся IQueryable определенного возраста и без родителей.В настоящее время я использую следующий код, который работает.

IQueryable<Student> Student s = from s in db.Students
                                 where s.Age == 18
                                 where !(from sp in db.StudentParent where sp.StudentID == s.StudentID select sp.StudentID).Contains(s.StudentID)
                                 select s;

Я просто хотел бы помочь преобразовать это в лямбда-выражение.

Ответы [ 2 ]

4 голосов
/ 18 декабря 2011

Вы должны создать ассоциацию в своей модели сущности.

Вы можете написать

db.Students.Where(s => s.Age == 18 && s.Parents.Count == 0)

При использовании ORM вам никогда не нужно явно запрашивать таблицу соединений (например, StudentParent).

2 голосов
/ 18 декабря 2011

Это должно работать:

db.Students.Where( s =>
    s.Age == 18 &&  db.StudentParent.All(sp => sp.StudentID != s.StudentID)
);

Редактировать: Предполагается, что у вас нет ссылки от учеников на родителей;если вы это сделаете, используйте его вместо объединения для лучшей читаемости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...