2012-07-16 24 views
0

在下面的代碼中,第一條LINQ語句抓住所有活動客戶(c)幷包含他們的訪問。後續行會執行額外的過濾,但與此問題無關。如何返回具有相關實體屬性條件的實體?

在最後一行,我試圖限制客戶訪問那些Visit.Id等於parsedVisitId的客戶,但無法讓這條線路工作。我不能把所有甚至可以編譯的東西放在一起。 parsedVisitId是一個從字符串中分析出來的int。

如何重寫最後一行以僅返回訪客ID等於parsedVisitId的客戶?

var customers= this.db.Customers.Where(c => c.IsActive).Include(c => c.Visits).AsQueryable(); 
// 
// more filtering stuff happens here... 
// 
customers= customers.Where(p => p.Visits.Where(v => v.Id == parsedVisitId)); 
+0

客戶訪問是否正確? – ethicallogics 2012-07-16 16:46:29

回答

0
customers = customers.Where(p => p.Visits.Any(v => v.Id == parsedVisitId)); 

使用任何代替凡Visits.I希望上面的代碼行會有所幫助。

在代碼

客戶= customers.Where(p值=> p.Visits.Where(V => v.Id == parsedVisitId));

customers.Where(...)方法期望的λexpresion具有類型客戶和返回類型布爾的參數,但你的lambda表達式

p.Visits.Where(V => v.Id == parsedVisitId)類型

IEnumerable<Visit> 

,因此它不工作的

回報。我想知道它是如何編譯的。

相關問題