我有一个实体User
,其属性List<User>
具有多对多关系。这有效。现在,我想让User
不在特定用户的List<User>
中,并且他们有一个包含我的研究的特定名称。
所以我这样做:
List<User> users = db.User
.Where(user => user.Name.Contains(research)
.Where(user => user.UserId != UserConnected.UserId)
.ToList();
它的工作,但在这里,我不排除用户无法进入List的事实。 我想做类似的事情:
.Where(user => userConnected.Friends.Any(friend => user.UserId != friend.UserId))
经过多次尝试,我不知道这是怎么回事。我想知道我是否真的理解这是如何运作的。
答案 0 :(得分:3)
对于EF,包含适用于此类问题。这就是EF能够变成SQL的全部内容。尝试:
var friendIds = userConnected.Friends.Select(f=>f.UserId).ToList();
List<User> users = db.User
.Where(user => user.Name.Contains(research)
.Where(user => user.UserId != UserConnected.UserId)
.Where(user => !friendIds.Contains(user.UserId))
.ToList();