如何在从 .Include 实体框架查询返回的数据上指定 where 子句?
Posted
技术标签:
【中文标题】如何在从 .Include 实体框架查询返回的数据上指定 where 子句?【英文标题】:How do you specify a where clause on data returned from a .Include in an Entity Framework query? 【发布时间】:2010-09-27 06:17:33 【问题描述】:给定以下数据库表层次结构:
Region
------
RegionId
RegionName
Country
-------
CountryId
RegionId
CountryName
Destination
-----------
DestinationId
CountryId
DestinationName
Venue
-----
VenueId
DestinationId
VenueName
我有以下实体框架查询:
var result = from region in context.Region.Include("Country.Destination.Venue")
select region
这将返回所有表中的所有行(外连接)
是否可以引入 where 子句以便仅包含场所不为空的行(或使用内部连接)?
谢谢
【问题讨论】:
【参考方案1】:试试这个。它应该返回您正在寻找的结果:仅具有相应地点的区域。
var result = from region in context.Region.Include(Country.Destination.Venue)
let v = (from ctry in region.Country
join dest in context.Destination
on ctry.CountryId
equals dest.CountryId
into destGroup
from dests in destGroup
join ven in context.Venue
on dests.DestinationId
equals ven.DestinationId
into venGroup
select ctry).Any()
where v == true
select region;
【讨论】:
谢谢,我试过了,但是如果有关联的国家和目的地但没有关联的地点,它会带回所有地区。 好的。你可能是对的。我在这里的一个示例应用程序上对此进行了测试,但我只有三张桌子可以玩,而不是四张。我希望这显示了您可以尝试的示例。以上是关于如何在从 .Include 实体框架查询返回的数据上指定 where 子句?的主要内容,如果未能解决你的问题,请参考以下文章