0

我正在尝试在对象内的列表上使用 LINQ。我将尝试解释:

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

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

然后,我得到一个用户 ID 列表(我们称它为 UsersList,例如 UsersList 是一个 List<int> 对象),并希望获取所有评论,其中 UsersList 中的所有用户都在该评论的“用户”列表中。

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

如何做到这一点?

谢谢!

4

3 回答 3

3
comments.Where(c => usersList.All(id => c.users.Any(user => user.Id == id)));
于 2012-10-29T15:13:04.483 回答
1

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

var query = comments
    .Where(c => UsersList.All(id => c.users.Any(u => u.ID == id)));
于 2012-10-29T15:14:11.957 回答
0

就这么简单:

comments.Where(c => UsersList.All(uId => c.users.Contains(u => u.Id == uId)));
于 2012-10-29T15:13:16.563 回答