我有一个问题:(我通过映射表(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/

10-13 07:04