EF Linq Select语句

EF Linq Select语句,linq,entity-framework,Linq,Entity Framework,我需要linq声明的帮助 我需要 从ZipCodeCarrierRoute表中选择*但仅从联系人\u CarrierCodeAssignments和联系人中检索子对象,其中contacts.Active=true 我们将不胜感激 更新:以下是针对@Yuliam提供的解决方案的json响应。信息技术It’还是不太对 我脑子里想的是,我没有在电脑或linqpad上测试它 var query = from zipCodeCR in db.ZipCodeCarrierRoute. w

我需要linq声明的帮助

我需要
从ZipCodeCarrierRoute
表中选择*但仅从
联系人\u CarrierCodeAssignments
联系人中检索子对象,其中contacts.Active=true

我们将不胜感激

更新:以下是针对@Yuliam提供的解决方案的json响应。信息技术It’还是不太对


我脑子里想的是,我没有在电脑或linqpad上测试它

var query = 
    from zipCodeCR in db.ZipCodeCarrierRoute.
    where zipCodeCR.Contact_CarrierCodeAssignments.All(contact_codeAssignment => contact_codeAssignment.Contact.Active==true)
    select zipCodeCR;

如果我理解正确,您希望检索仅包含活动的
联系人代码分配的
zipcodecarrierrout

var query = db.ZipCodeCarrierRoute
    .Where(x => x.ZipCode == ZipCode)
    .Select(x => new 
    {
        ZipCodeCarrierRoute = x,
        Contact_CarrierCodeAssignments = x.Contact_CarrierCodeAssignments
            .Where(y => y.Contact.Active)
    })
    .AsEnumerable()
    .Select(a => a.ZipCodeCarrierRoute);

var list = query.ToList();

创建一个包含所有所需字段的模型类,然后使用导航属性编写linq语句。我不确定如何在子查询中访问联系人。我有db.zipcodecarrierrout.Where(x=>x==ZipCode),它是原始linq语句。从这里我可以看到Cotact_CarrierCode_分配,但我看不到联系人实体。不太清楚。我正沿着这条路走,但我用的是任何方法,而不是全部方法。var routes=来自db.ZipCodeCarrierRoutes中的a,其中a.ZipCode==ZipCode&&a.Contact\u CarrierCode\u Assignments.Any(x=>x.Contact.Active==true);给了我正确的结构,但不是正确的结果。使用你的建议没有返回任何作业或联系Hanks@Yuliam,非常接近。问题是我在收藏中只得到一个联系人。对于测试项目,我有2个与联系人相关的任务,因此我应该得到2个。使用此语句,如果我将第一个联系人设置为非活动,那么我将获得第二个仍处于活动状态的联系人。当我将联系人设置回活动状态时,我只会将该联系人恢复。@Tim,在更改数据库中的值后,您需要再次执行代码,这应该包括
contact\u CarrierCodeAssignments
其中
contact
是活动的,我读错了json响应。它确实返回第二个触点。谢天谢地,他们两人都还在。非活动联系人仅显示在列表的底部。让我们来看看。