C# 包含关系的实体框架中的lambda表达式
我试图找到一个用户的所有朋友,让我们想象一下这两个表 用户(用户ID、名称) 友谊(id、创建者id、FriendID、已接受) CreatorID和FriendID是Users表的外键 下面的查询应该返回所有与UserID=1的用户是“朋友”的用户; 但它还带来了别的东西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 ==
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映射到什么