C# 如何使用Linq将数据连接到实体和WCF数据服务?

C# 如何使用Linq将数据连接到实体和WCF数据服务?,c#,linq,entity-framework,linq-to-entities,wcf-data-services,C#,Linq,Entity Framework,Linq To Entities,Wcf Data Services,我有4个相关实体,如下所示: LocalAgency<-0..1----1->Agency<-0..1----1->Organization<-0..1----1->Customer var items = (from i in Context.LocalAgencies.Expand("Agency").Expand("Organization").Expand("Customer") where (String.IsNullOr

我有4个相关实体,如下所示:

LocalAgency<-0..1----1->Agency<-0..1----1->Organization<-0..1----1->Customer
var items = (from i in Context.LocalAgencies.Expand("Agency").Expand("Organization").Expand("Customer")
             where (String.IsNullOrEmpty(CustomerName) || i.Agency.Organization.Customer.CustomerName.Contains(CustomerName))
             select i).Skip(StartIndex).Take(PageSize).ToList<LocalAgency>();
var items = (from localAgency in Context.LocalAgencies
             join agency in Context.Agencies on localAgency.CustomerID equals agency.CustomerID
             join organization in Context.Organizations on localAgency.CustomerID equals organization.CustomerID
             join customer in Context.Customers on localAgency.CustomerID equals customer.CustomerID
             where (String.IsNullOrEmpty(CustomerName) || customer.CustomerName.Contains(CustomerName))
             select localAgency).Skip(StartIndex).Take(PageSize).ToList<LocalAgency>();
IQueryable<LocalAgency> items = Context.LocalAgencies;
items = items.Except(from i in items
                     where (String.IsNullOrEmpty(CustomerName) || i.Agency.Organization.Customer.CustomerName.Contains(CustomerName))
                     select i).Skip(StartIndex).Take(PageSize);
如果“连接”只有1级深度,这种方法就可以工作,但它无法获取导航属性的导航属性

然后,我尝试了一个
连接
,如下所示:

LocalAgency<-0..1----1->Agency<-0..1----1->Organization<-0..1----1->Customer
var items = (from i in Context.LocalAgencies.Expand("Agency").Expand("Organization").Expand("Customer")
             where (String.IsNullOrEmpty(CustomerName) || i.Agency.Organization.Customer.CustomerName.Contains(CustomerName))
             select i).Skip(StartIndex).Take(PageSize).ToList<LocalAgency>();
var items = (from localAgency in Context.LocalAgencies
             join agency in Context.Agencies on localAgency.CustomerID equals agency.CustomerID
             join organization in Context.Organizations on localAgency.CustomerID equals organization.CustomerID
             join customer in Context.Customers on localAgency.CustomerID equals customer.CustomerID
             where (String.IsNullOrEmpty(CustomerName) || customer.CustomerName.Contains(CustomerName))
             select localAgency).Skip(StartIndex).Take(PageSize).ToList<LocalAgency>();
IQueryable<LocalAgency> items = Context.LocalAgencies;
items = items.Except(from i in items
                     where (String.IsNullOrEmpty(CustomerName) || i.Agency.Organization.Customer.CustomerName.Contains(CustomerName))
                     select i).Skip(StartIndex).Take(PageSize);
但是,此实例中不支持除之外的


我错过了什么?我是否需要在
数据服务
端设置一些东西,以允许沿着定义的导航属性进行简单连接?

我在
扩展
上使用了错误的语法。我做了以下工作:

var items = (from i in Context.LocalAgencies.Expand("Agency").Expand("Agency/Organization").Expand("Agency/Organization/Customer")
where (String.IsNullOrEmpty(CustomerName) || i.Agency.Organization.Customer.CustomerName.Contains(CustomerName))
select i).Skip(StartIndex).Take(PageSize).ToList<LocalAgency>();
var items=(来自Context.LocalAgencies.Expand(“代理”).Expand(“代理/组织”).Expand(“代理/组织/客户”)
其中(String.IsNullOrEmpty(CustomerName)| i.Agency.Organization.Customer.CustomerName.Contains(CustomerName))
选择i).Skip(开始索引).Take(页面大小).ToList();