C# 如何从仅链接到另一个表的关联表中筛选结果?

C# 如何从仅链接到另一个表的关联表中筛选结果?,c#,sql,entity-framework-4.1,many-to-many,entity-framework-designer,C#,Sql,Entity Framework 4.1,Many To Many,Entity Framework Designer,因此,我不知道如何正确地构造EF查询以获得所需的行。我这里只有两张桌子 实体框架设计器为my db结构创建此edmx图。顶部的循环表示我在筛选时遇到问题的关联表 SQL2005DB图如下所示。GeoBoundaryAssociation表具有多对多关系,从它仅有的两列返回到GeoBoundary表的主键GeoID 我可以编写SQL查询以非常容易地获取所需的行。我只需要传递一个变量就可以得到结果 select g.geoid, g.name from geoboundaryassociatio

因此,我不知道如何正确地构造EF查询以获得所需的行。我这里只有两张桌子

实体框架设计器为my db结构创建此edmx图。顶部的循环表示我在筛选时遇到问题的关联表

SQL2005DB图如下所示。GeoBoundaryAssociation表具有多对多关系,从它仅有的两列返回到GeoBoundary表的主键GeoID

我可以编写SQL查询以非常容易地获取所需的行。我只需要传递一个变量就可以得到结果

select g.geoid, g.name
from geoboundaryassociation a
    inner join geoboundary g on g.geoid = a.geoidto
where a.geoidfrom = 29
当我尝试编写EF查询时,似乎无法从关联表中的两列中筛选行。任何帮助都将不胜感激

作为短期修复,我在GeoBoundaryAssociation表中添加了一个ID列,以便让EF生成一个实体,这样我就可以直接过滤它。但我相信一定有更好的方法可以做到这一点。

试试:

var query = context.GeoBoundaries
                   // Try either g.GeoBoundaries or g.GeoBoundary1
                   .Where(g => g.GeoBoundaries.Any(a => a.GeoID == 29);
                   .Select(g => new { g.GoeID, g.Name });

谢谢拉迪斯拉夫,这很好用。我尝试了一些与此非常接近的查询,但没有找到“.Any”方法。在掌握这一点之前,我还有很长的路要走。