使用EF 4.1和LINQ查找无关联的m ... n相关实体

时间:2012-02-22 13:22:33

标签: .net linq entity-framework join edmx

我有两个表/实体UsersCompanies。 两者都是m-n关系。 当我在EDMX中使用这些表并生成POCO时,m-n映射表消失了(似乎因为除了两个PK之外没有任何内容)。

相反,导航属性由EDMX创建,这很好:

user.Companies ... -> gives me all users for that company

company.Users ... -> gives me all companies for that user

但是,如果我希望所有没有与之关联的公司的用户怎么办? 如何访问缺失的表以创建正确的连接?

1 个答案:

答案 0 :(得分:1)

你应该找到没有公司的用户(如你所说),所以他们的use.Companies.Count应为零,只需将其转换为linq(如下所示):

var withoutCompanyUsers = Users.Where(x=>x.Companies.Count() == 0).ToList();

编辑:关于您的第二个问题:但如果我想要与给定用户无关的所有复印件怎么办?

在这种情况下,您应该找到没有特定用户的公司:

检查公司是否有特定用户:

company.Users.Any(x=>x.ID = givenUserID)

在没有特定用户的情况下获取公司:

var companies = Companies.Where(x=>!x.Users.Any(y=>y.ID == givenUser.ID)).ToList();