获取相关实体上具有条件的实体

本文关键字:实体 有条件 获取 | 更新日期: 2023-09-27 17:50:18

我有一个具有多对多关系的属性List<User>的实体User。这个作品。现在,我想获得不在特定用户的List<User>中的User,并且它们具有包含我的研究的特定名称。

所以我这样做了:

List<User> users = db.User
.Where(user => user.Name.Contains(research)
.Where(user => user.UserId != UserConnected.UserId)
.ToList();

这是工作,但在这里,我不排除用户不能在列表中的事实。我想这样做:

.Where(user => userConnected.Friends.Any(friend => user.UserId != friend.UserId))

经过多次尝试,我还是不知道该怎么做。我想知道我是否真的理解这是如何工作的

获取相关实体上具有条件的实体

对于EF, Contains可以很好地解决这类问题。这完全是关于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();