Oli*_*ver 6 c# sql-server-2008 linq-to-sql
我有一个问题:(我在两个表(1和2)之间有很多表,通过映射表(3):
(1)Trees / (2)Insects
TreeID <- (3)TreeInsects -> InsectID
Run Code Online (Sandbox Code Playgroud)
然后是一对多的关系:
Trees.ID -> Leaves.TreeID
Run Code Online (Sandbox Code Playgroud)
我想执行一个查询,它将为我提供昆虫收集的所有叶子(通过树木 - 昆虫映射表).
例如,我有List<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;
Run Code Online (Sandbox Code Playgroud)
我不擅长类似 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 ) );
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4076 次 |
最近记录: |