2014-09-26 23 views
1

我有一個對象CustomerVisit關係one-to-many。 訪問有一定的VisitType實體框架。有限公司包括查詢

我想在特定日期後只能獲取Visits,而對於我所有的Customers都需要這樣做。爲此我傳遞參數referenceDate

Linq查詢我能想到的,會給我想要的結果:

customers.Include(c => c.Visits.Where(v => v.VisitDate >= referenceDate)).ToList(); 

Offcourse這不起作用,因爲Include實際需要的路徑。

有沒有這個問題的Linq替代品,或者我應該爲此編寫自定義查詢?

+0

的可能重複[EF:包括與where子句(http://stackoverflow.com/questions/16798796/ef-include-with-where-clause) – 2014-09-26 09:16:16

+0

這不是一個好的解決方案。執行.Select(x => x.b)時發生以下錯誤:符號類型'Devart.Common.Entity.ae'和當前表達式'Devart.Common.Entity.ae'的列添加失敗。我的對象上有其他屬性會導致這些問題。 – JMan 2014-09-26 09:44:00

+0

'customers.Select(c => new {c,Visits = c.Visits.Where(v => v.VisitDate> = referenceDate)})。AsEnumerable()。Select(a => ac).ToList()' – 2014-09-26 09:50:15

回答

0

也許你需要類似的東西:

customers.Include(c => c.Visits).Where(c => c.Visits.VisitDate >= referenceDate)).ToList(); 

customers.Include("Visits").Where(c => c.Visits.VisitDate >= referenceDate)).ToList();

+0

這會在沒有訪問的情況下排除我的客戶。 – JMan 2014-09-26 09:23:15

+0

啊好吧...還有類似的東西? customers.include(c => c.Visits).Where(c => c.Visits.VisitDate> = referenceDate || c => c.Visits == null || c.Visits.Count == 0))。ToList ();我現在不在我的開發機器上,所以代碼沒有經過測試;)我也非常肯定,訪問不會被檢查爲空和計數= 0。其中一個應該是足夠的... – Greenhorn 2014-09-26 09:25:36

+0

這會仍包括我所有的訪問,這是對客戶的過濾器 – JMan 2014-09-26 09:26:39