Linq-to-Entities~使用Include添加子表时,如何过滤子表属性?

时间:2010-06-29 10:23:36

标签: linq-to-entities

有没有办法将Where子句应用于Included子表?

实施例: 我有一个Customers实体集和Addresses实体集,我已经使用[Include]属性对元数据类进行了适当的修饰。我可以轻松过滤客户的财产,例如姓氏......

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

但是说我想过滤一下地址子表的属性,比如Address.City?地址作为客户的属性存在,但智能感知不会获取任何地址列。

我最好使用联接而不是包含吗?

1 个答案:

答案 0 :(得分: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- *等)。

...问候