在对象列表上使用IN

时间:2012-10-29 15:08:16

标签: c# linq linq-to-entities

我正在尝试在对象内的列表上使用LINQ。我会试着解释一下:

我有一个名为“评论”的对象。 在评论对象中,我有一个“用户”对象列表,其中每个用户对象都有一个“ID”字段。

,例如

Public class Comment {
List<User> users;
...
}

然后,我得到一个用户ID列表(让我们称之为UsersList,例如UsersList是一个List&lt; int&gt;对象),并希望得到所有注释,其中UsersList中的所有用户都在“users”列表中该评论。

因此,如果UsersList = {1,2}我希望得到所有评论,其中id为1的用户和id为2的用户将出现在“用户”列表中。

如何实现这一目标?

谢谢!

3 个答案:

答案 0 :(得分:3)

comments.Where(c => usersList.All(id => c.users.Any(user => user.Id == id)));

答案 1 :(得分:1)

反过来查询它,即不是在listOfIds中询问“userId”,而是询问“listOfIds.Contains(userId)”。

var query = comments
    .Where(c => UsersList.All(id => c.users.Any(u => u.ID == id)));

答案 2 :(得分:0)

这很简单:

comments.Where(c => UsersList.All(uId => c.users.Contains(u => u.Id == uId)));