获取具有相关实体条件的实体
get entity with condition on related entity
我有一个实体 User
,其属性 List<User>
具有多对多关系。这行得通。现在,我想要 User
不在特定用户的 List<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();
我有一个实体 User
,其属性 List<User>
具有多对多关系。这行得通。现在,我想要 User
不在特定用户的 List<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();