使用 Linq 通过 Entity Framework 关系筛选父记录

Use Linq to shortlist parent records by using Entity Framework relations

我在 Visual Studio 2013 年有一个使用 DB-First Entity Framework 5 和 .NET Framework 4.5 的项目。我有一个一般要求,我将使用一个示例进行解释:在数据库中有以下 tables:

我在 .NET 中创建实体模型后,我的公司 class 包含以下字段,其中包括:

public virtual ICollection<company_user> company_user { get; set; }

我想编写一个 linq 查询,根据其 company_user 集合中的至少一条记录具有 Id == x 的条件,从公司集合中为我提供一组过滤记录,其中x 是一些用户 ID。这意味着我想获取与某个用户相关的所有公司的列表。目前我是这样做的,这...不优雅:

var cList1 = (from c in db.companies
                            join cu in db.company_user on c.Id equals cu.CompanyId
                        select new
                        {
                            CompanyId = cu.CompanyId,
                            UserId = cu.UserId,
                            CompanyName = c.Name
                        }).ToList().Where(x => x.UserId == u.Id);

        List<company> companies = new List<company>();
        foreach (var cv in cList1)
        {
            company c = new company();
            c.Id = cv.CompanyId;
            c.Name = cv.CompanyName;
            companies.Add(c);
        }

        //companies now has the set of companies that I need

请帮我写一个最简洁的查询来实现同样的效果。

提前致谢 扎瓦尔

怎么样:

db.companies.Where(c => c.company_user.Any(cu => cu.UserId == u.Id));