2012-08-23 163 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或類似的東西。這意味着它是懶惰的評估。因此,無論方法的調用順序如何,您都可以獲得相同的性能。