我有一個實體Person,其中包含與其關聯的位置列表。我需要查詢個人表,並從位置列表(標準)中獲取所有至少有一個位置的人。下面的作品,但效率非常低:檢查列表是否包含來自EntityFramework中其他列表的項目
var searchIds = new List<int>{1,2,3,4,5};
var result = persons.Where(p => p.Locations.Any(l => searchIds.Any(id => l.Id == id)));
這對小名單(比如5-10 searchIds和5-10位置的人能正常工作的問題是,有些人可能有100個地點和搜索即可。當我試圖執行上面的EF時,實際上產生了2000多條SQL語句,並且因爲嵌套過於深入而失敗了,雖然嵌套本身已經是一個問題,即使它可以工作, d仍然不會發生在2000+ SQL語句中
注意:真正的代碼還包括多層次和父子關係,但我確實設法只用id來代替這個相當平坦的結構,而不是的福ll objects
在EF中完成此操作的最佳方法是什麼?
獲得2000+ sql時,您傳遞了多少個ID? – ivowiblo