Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 使用EF 4.1和LINQ查找未关联的m…n相关实体_.net_Linq_Entity Framework_Join_Edmx - Fatal编程技术网

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

.net 使用EF 4.1和LINQ查找未关联的m…n相关实体,.net,linq,entity-framework,join,edmx,.net,Linq,Entity Framework,Join,Edmx,我有两个表/实体用户和公司。 两者都是相互联系的m-n关系。 当我在EDMX中使用这些表并生成POCO时,m-n映射表消失了(似乎是因为其中除了两个PK之外什么都没有) 相反,导航属性由EDMX创建,这很好: user.Companies ... -> gives me all users for that company 及 但是如果我想要所有没有关联公司的用户怎么办? 如何访问缺少的表以创建正确的联接?您应该找到没有公司的用户(如您所说),因此他们的use.companys.Coun

我有两个表/实体
用户
公司
。 两者都是相互联系的m-n关系。 当我在EDMX中使用这些表并生成POCO时,m-n映射表消失了(似乎是因为其中除了两个PK之外什么都没有)

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

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

但是如果我想要所有没有关联公司的用户怎么办?
如何访问缺少的表以创建正确的联接?

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

编辑:关于您的第二个问题:但是如果我想要所有与给定用户无关的公司,该怎么办

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

var companies = Companies.Where(x=>!x.Users.Any(y=>y.ID == givenUser.ID)).ToList();
检查公司是否有特定用户:

company.Users.Any(x=>x.ID = givenUserID)
正在获取没有特定用户的公司:

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

有趣。但是如果我想要所有与给定用户无关的copmanies呢?我在x.companys实体中找不到这些公司,因为它们根本不在映射表中。@John,您可以这样做:
companys.Where(x=>!x.Users.Any(y=>y.ID==givenUser.ID);
我将编辑答案来描述您的情况。谢谢!会否定任何()?意味着实际分配的用户将被返回为“未分配”@John,
任何
检查公司是否有特定的用户,
检查公司的非用户是否为
givenUser
,您也可以使用:
公司。其中(x=>x.users.All(y=>y.ID!=givenUser.ID)
再次感谢。这似乎有效。实际上,我发现.All()选项更容易阅读。:)当我问一些愚蠢的问题时,你知道为什么映射表没有显示在EDMX中吗?
var companies = Companies.Where(x=>!x.Users.Any(y=>y.ID == givenUser.ID)).ToList();