我有一个问题:(我通过映射表(3)在两个表(1&2)之间有很多表:
(1)Trees / (2)Insects
TreeID <- (3)TreeInsects -> InsectID
然后是一对多的关系:
Trees.ID -> Leaves.TreeID
我想执行一个查询,该查询将为我提供所有昆虫的叶子(通过树木-昆虫映射表)。
例如。我有
List<Insects>
,我希望所有通过Tree-Insects映射表与列表中任何昆虫相关联的叶子。这似乎是一个简单的任务,但是由于某些原因,我在执行此操作时遇到了麻烦!
我所拥有的最好的:但是Single()使它不正确:
from l in Leaves
where (from i in Insects
select i.ID)
.Contains((from ti in l.Tree.TreeInsects
select ti.InsectID).Single())
select l;
最佳答案
我对类似sql的语法不好,所以我会写扩展名。
ctx.Leaves.Where(l => ctx.TreeInsects.Where( ti => list_with_insects.Select(lwi => lwi.InsectID).Contains( ti.InsectID ) ).Any( ti => ti.TreeID == l.TreeID ) );
关于c# - LINQ to SQL,其中集合包含集合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6298469/