限制Include in EntityFramework返回的对象集

时间:2013-04-30 11:23:40

标签: .net entity-framework entity-framework-5

我有以下表格,我想要返回它包含的所有扇区和任何AvailableResource。

Sector-AvailableResources database diagram

这通常只是一个例子......

_dataContext.Sectors.Include(s=>s.AvailableResources);

...但是如果它们尚未发布(ReleasedOn可以为空)或者ReleaseOn日期是将来,我只想要AvailableResources。

我几乎可以肯定,我在原始SQL中执行此操作的唯一方法是连接到AvailableResources的子查询,但我想使用IDbSet集合(包装EntiyFramework 5)来执行此操作。

1 个答案:

答案 0 :(得分:0)

我查找了如何在LINQ中进行子查询并找到了这个答案。 how to do subquery in LINQ

从那以后我尝试了这个......

var context = new CSSDbEntities();

context.Sectors.Include(x=> x.AvailableResources)
    .Where(x=> !x.AvailableResources.Any() || context.AvailableResources.Where(ar=> ar.SectorId == x.SectorId && ar.ReleasedOn == null).Any());

这似乎可以解决问题。我必须添加!x.AvailableResources.Any()或者它不想做INNER JOIN并且只返回带有资源的扇区。