我正在尝试在对象内的列表上使用LINQ。我会试着解释一下:
我有一个名为“评论”的对象。 在评论对象中,我有一个“用户”对象列表,其中每个用户对象都有一个“ID”字段。
,例如
Public class Comment {
List<User> users;
...
}
然后,我得到一个用户ID列表(让我们称之为UsersList,例如UsersList是一个List&lt; int&gt;对象),并希望得到所有注释,其中UsersList中的所有用户都在“users”列表中该评论。
因此,如果UsersList = {1,2}
我希望得到所有评论,其中id为1的用户和id为2的用户将出现在“用户”列表中。
如何实现这一目标?
谢谢!
答案 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)));