LINQ to Entities 选择多对多关系中的所有条目

2023-12-06

我有 3 个 MySql 表:Students, Classes and StudentsInClasses.

实体框架将它们转换为两个实体Student and Class,每个都通过多对多导航属性链接到另一个(例如Student.Classes).

但没有StudentsInClasses实体,所以使用 LINQ to Entities(相当于 SQL)的最佳调用方式是什么:

SELECT StudentId, ClassId FROM StudentsInClasses;

我正在寻找 { StudentId, ClassId } 对的 HashSet (或等效项),以便我可以快速查找给定学生是否在给定班级中。 (存储这个的最佳方式是什么?)

非常感谢。


怎么样:

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比a更合适HashSet here.)

编辑:如果您不想使用查询表达式:

var query = db.Classes
              .SelectMany(@class => @class.Students,
                          (@class, student) => new { ClassId = @class.ID,
                                                     Student = student });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LINQ to Entities 选择多对多关系中的所有条目 的相关文章