0

我有下表,我想返回它包含的所有扇区和任何可用资源。

Sector-AvailableResources 数据库图

这通常只是一个简单的例子......

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

...但我只想要 AvailableResources 如果它们还没有被释放(ReleasedOn 可以为空)或者 ReleaseOn 日期在未来。

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

4

1 回答 1

0

我查找了如何在 LINQ 中进行子查询并找到了这个答案。如何在 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 并且只返回具有资源的扇区。

于 2013-04-30T12:03:53.007 回答