实体框架中的 lambda 表达式,包括关系



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

用户

(用户 ID 、名称)朋友船(ID,创建者ID,朋友ID,接受)创建者 ID 和朋友 ID 是用户表的外键

下面的查询应返回与用户 ID = 1 的用户"好友"的所有用户;但它返回了别的东西

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

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

尝试翻转查询

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

如果FriendShips有很多用户,则查询将是

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

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

最新更新