我试图找到一个用户的所有朋友让我们想象两个表
用户(UserID,名称) 友谊(ID,的CreatorID,FriendID,接受) CreatorID和FriendID是Users表的外键
下面的查询应该返回User with UserID = 1的所有“Friends”用户; 但它返回别的东西
Int64 userID =1;
ctx.Users.Where(x => x.FriendShips.All(y => y.Accepted == true && y.CreatorID == userID)).ToList();
如果有人可以告诉我查询应该使用lambda表达式,我将不胜感激。
答案 0 :(得分:1)
尝试翻转查询
ctx.Friendships.Where(y=>y.CreatorID==userID && y.Accepted==true).Select(y=>y.User).Distinct();
如果FriendShip有很多用户,则查询将是
ctx.Friendships.Where(y=>y.CreatorID==userID && y.Accepted==true).SelectMany(y=>y.Users).Distinct();
答案 1 :(得分:0)
您的查询会返回所有朋友具有特定ID的用户。我不认为这是你的意图。相反,您希望任何朋友具有特定ID的用户(并且可能还有其他朋友)。