2010-06-29 75 views
1

有沒有辦法將Where子句應用於包含的子表?Linq-to-Entities〜使用Include添加子表時,如何過濾子表屬性?

實施例: 我有一個Customers實體集和和Addresses實體集,我已經適當地裝飾元數據類與[Include]屬性。我可以在客戶,如姓氏的屬性輕鬆過濾...

public IQueryable<Alphagram> GetCustomersWithAddresses() 
{ 
    return this.ObjectContext.Customers.Include("Address") 
     .Where(w => w.LastName == "Smith") 
} 

但說我想也是一個屬性過濾器的地址,他的子表,這樣Address.City?地址作爲客戶的財產存在,但智能感知不會接收任何地址列。

我最好使用連接而不是包括?

回答

1

你可以做這樣的事情:

public IQueryable<Alphagram> GetCustomersWithAddresses() 
{ 
    return this.ObjectContext.Customers.Include("Address") 
     .Where(w => w.LastName == "Smith" && w.Address.Any(a => a.City == "Some city") /* w.Address.All(...) */) 
} 

現在,這取決於你想實現什麼和如何客戶和地址相關的(1-1,1 *等)。

Regards ...

+0

太棒了,謝謝! – eponymous23 2010-06-29 14:09:48

相關問題