我有3个MySql表:Students
,Classes
和StudentsInClasses
。
实体框架将这些实体转换为两个实体Student
和Class
,每个实体使用多对多导航属性链接到另一个实体(例如Student.Classes
)。
但是没有StudentsInClasses
实体,所以调用的最佳方法是什么,使用LINQ to Entities,相当于SQL :
SELECT StudentId, ClassId FROM StudentsInClasses;
我正在寻找一个{StudentId,ClassId}对的HashSet(或等价物),这样我就可以快速查找给定的学生是否在某个班级。 (存储此内容的最佳方式是什么?)
非常感谢。
答案 0 :(得分:3)
怎么样:
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 });