2012-08-23 162 views
0

假设我有3个实体国家,州和城市。并且关系是城市 - >州 - >国家。现在我有查询的搜索像包含在实体框架中4.1

return container.Countries.Include("States.Cities") 
.Where(c=>c.States.Sum(s.Population)>10000) 
.Search(filter)   
.Skip(startIndex)  
.Take(itemCount) 
.ToList(); 

我包括城市所有国家在上面的查询,但我想在查询的结尾是采取方法和之前ToList方法后,将其列入。方法假设查询只返回50条记录,我只想为这50个记录包含城市状态,而不是像上面的查询那样针对所有状态。可以帮助我如何做到这一点?任何帮助将非常可爱。这只是虚拟查询,我想为了性能的角度来做到这一点。在此先感谢

+0

你只想要50个州,还是你想要所有的州,但只有前50个城市? –

+0

只有城市的第一个50 – ethicallogics

+0

你能发布真正的查询吗?这一个不起作用,因为你正在编写一个'Where'查询re:states,但你正在使用'Countries'查询。 –

回答

1

有没有什么区别,你把Include在你的查询。它只是一个行为修饰符,它在你看到它时不会被执行。只要你在IQueryableInclude上操作,无论你放在哪里,都会有相同的效果。

1

您是否忘记导入代码的System.Data.Entity命名空间?看看这个

How to use Include() after OfType()?

任何方式,我觉得这一切都适合你的代码。 ToList之前的所有方法将返回IQueryable或类似的东西。这意味着它是懒惰的评估。因此,无论方法的调用顺序如何,您都可以获得相同的性能。