实体框架多对多LINQ查询

本文关键字:查询 LINQ 实体 框架 | 更新日期: 2023-09-27 18:16:47

我有两个多对多关系的模型:

ExampleSample。EF在数据库中创建了三个表:

Examples  
Samples  
ExampleSamples  

我试图从ExampleSamples中选择所有示例,其中样本Id是在样本Id列表中。

我如何做到这一点?

实体框架多对多LINQ查询

我是这样做的:

var sampleids = new int[]{1,2,3};
var examples = db.Examples.Where(e=>e.Samples.Any(s=>sampleids.Contains(s.id));

你也可以用相交来代替任何/包含,你也可以通过SelectMany来做,但我认为这是最容易理解的。

这似乎适用于多对多,其中连接列表仅包含多对多中两个表中的pk:

int[,] courseIDs = new int[,] { 1,2,3 };
var students =
 from s in dc.Students
 from c in s.Courses
 where courseIDs.Contains(c.CourseID)
 select s;
https://smehrozalam.wordpress.com/2010/06/29/entity-framework-queries-involving-many-to-many-relationship-tables/