C# 包含关系的实体框架中的lambda表达式

C# 包含关系的实体框架中的lambda表达式,c#,entity-framework,lambda,C#,Entity Framework,Lambda,我试图找到一个用户的所有朋友,让我们想象一下这两个表 用户(用户ID、名称) 友谊(id、创建者id、FriendID、已接受) CreatorID和FriendID是Users表的外键 下面的查询应该返回所有与UserID=1的用户是“朋友”的用户; 但它还带来了别的东西 Int64 userID =1; ctx.Users.Where(x => x.FriendShips.All(y => y.Accepted == true && y.CreatorID ==

我试图找到一个用户的所有朋友,让我们想象一下这两个表

用户(用户ID、名称) 友谊(id、创建者id、FriendID、已接受) CreatorID和FriendID是Users表的外键

下面的查询应该返回所有与UserID=1的用户是“朋友”的用户; 但它还带来了别的东西

Int64 userID =1; 
ctx.Users.Where(x => x.FriendShips.All(y => y.Accepted == true && y.CreatorID == userID)).ToList();


如果有人能告诉我查询应该使用lambda表达式,我将不胜感激。

您的查询返回的用户的所有朋友都有特定id。我认为这不是您的意图。相反,您希望其any朋友具有特定id的用户(并且可能有其他朋友)。

尝试翻转查询

ctx.Friendships.Where(y=>y.CreatorID==userID && y.Accepted==true).Select(y=>y.User).Distinct();
如果友谊有很多用户,查询将是

ctx.Friendships.Where(y=>y.CreatorID==userID && y.Accepted==true).SelectMany(y=>y.Users).Distinct();

尝试使用类似以下内容:
ctx.Users.Select(x=>x.Frienships)。其中(y=>y.Accepted==true&&y.CreatorID==userID)).ToList()真的有效:)但是使用select user1而不是user,我如何开始与好友关系并返回用户你能解释一下吗?以及我如何获得好友我需要查看你的EF图来了解user1映射到什么