LINQ to Entities выбирает все записи в отношении многие ко многим - PullRequest
1 голос
/ 18 октября 2011

У меня есть 3 таблицы MySql: Students, Classes и StudentsInClasses.

. Entity Framework преобразует их в две сущности Student и Class, каждая из которых связана с другой с помощьюсвойство навигации многие-ко-многим (например, Student.Classes).

Но нет сущности StudentsInClasses, поэтому , как лучше всего вызывать, используя LINQ to Entities, эквивалент SQL :

SELECT StudentId, ClassId FROM StudentsInClasses;

Я ищу HashSet (или эквивалент) из пар {StudentId, ClassId}, чтобы я мог быстро найти, находится ли данный студент в данном классе.(Как лучше всего хранить это?)

Большое спасибо.

1 Ответ

3 голосов
/ 18 октября 2011

Как насчет:

var query = from @class in db.Classes
            from student in @class.Students
            select new { ClassId = @class.ID, Student = student };

var lookup = query.ToLookup(x => x.ClassId,
                            x => x.Student);

(Я подозреваю, что Lookup здесь более уместно, чем HashSet.)

РЕДАКТИРОВАТЬ: Если вы не хотите использовать запросвыражения:

var query = db.Classes
              .SelectMany(@class => @class.Students,
                          (@class, student) => new { ClassId = @class.ID,
                                                     Student = student });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...