C# SQL/Linq查询从多对多选择
我的SQL数据库中有以下(简化的)结构。 现在,我想选择用户尚未加入的所有组。 如果使用Linq/Entity框架编写查询会有所帮助,但我也可以使用SQL语句 我尝试使用Include(使用EF): 在查询中,然后使用:C# SQL/Linq查询从多对多选择,c#,sql,entity-framework,linq,C#,Sql,Entity Framework,Linq,我的SQL数据库中有以下(简化的)结构。 现在,我想选择用户尚未加入的所有组。 如果使用Linq/Entity框架编写查询会有所帮助,但我也可以使用SQL语句 我尝试使用Include(使用EF): 在查询中,然后使用: .Where(g => g.Group_User.UserId != userId) 但这样做不起作用,而且可能完全不是进行此类查询的正确方法 谢谢你的阅读 我想选择用户尚未加入的所有组 因此,您希望所有组都没有具有此用户ID的组用户,所以请使用!任何和=: var
.Where(g => g.Group_User.UserId != userId)
但这样做不起作用,而且可能完全不是进行此类查询的正确方法
谢谢你的阅读
我想选择用户尚未加入的所有组
因此,您希望所有组都没有具有此用户ID的组用户,所以请使用!任何
和=
:
var q = db.Group.Include(g => g.Group_User)
.Where(g => !g.Group_User.Any(gu => gu.UserId == userId));
是的,这起作用了,ReSharper建议进行此更改:g.Group\u AspNetUsers.All(gu=>gu.AspNetUsersid!=userId
这两者之间有很大的区别吗?@lordvlad30:不,resharper总是尽量避免使用!
。使用你觉得更可读的。两者都会产生相同的结果,同样有效。我更喜欢!Any
,因为这是你需求的翻译谢谢你的快速回答还有帮助!(没有足够的声望来提升投票率,但你值得)
var q = db.Group.Include(g => g.Group_User)
.Where(g => !g.Group_User.Any(gu => gu.UserId == userId));