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

时间:2015-05-20 17:00:13

标签: c# entity-framework where-clause

我有一个实体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))

经过多次尝试,我不知道这是怎么回事。我想知道我是否真的理解这是如何运作的。

1 个答案:

答案 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();