Entity framework 实体框架查询-从子表返回唯一行

Entity framework 实体框架查询-从子表返回唯一行,entity-framework,linq-to-entities,distinct,Entity Framework,Linq To Entities,Distinct,我有如下实体框架模型和相应数据库表中的数据: 问题:如何查询模型以返回与给定的人员相关的销售类型的所有行(完整实体,而不是匿名类型) 如果数据如上所述,那么对于John,查询应该返回sales\u type-表中的前三行,对于Mark,它应该返回第2行和第5行 ctx.PersonSales .Where(ps=> ps.Person.Id = myPersonId) .Where(ps=> ps.SalesMapping != null && ps.S

我有如下实体框架模型和相应数据库表中的数据:

问题:如何查询模型以返回与给定的
人员相关的
销售类型的所有行(完整实体,而不是匿名类型)

如果数据如上所述,那么对于John,查询应该返回
sales\u type
-表中的前三行,对于Mark,它应该返回第2行和第5行

ctx.PersonSales
   .Where(ps=> ps.Person.Id = myPersonId)
   .Where(ps=> ps.SalesMapping != null && ps.SalesMapping.SalesType != null)
   .Select(ps=>ps.SalesMapping.SalesType)
   .Distinct();

也许是这样的:

var personId=1;
var result= (
        from salesType in db.sales_type
        where
            (
                from salesMapping in db.sales_mapping
                join personSale in db.person_Sales
                    on salesMapping.id equals personSale.sales_mapping_id
                join person in db.person
                    on personSale.person_id equals person.id
                where
                    person.Id == personId
                select salesMapping.sales_type_id
            ).Contains(salesType.id)
        select salesType
    ).ToList();

其中db是linq数据上下文

是否为每条记录寻找长的单行?