C# 在对象列表中使用
我试图在对象内的列表上使用LINQ。我会尽力解释: 我有一个叫做“评论”的东西。 在comment对象中,我有一个“User”对象列表,其中每个User对象都有一个“ID”字段 比如C# 在对象列表中使用,c#,linq,linq-to-entities,C#,Linq,Linq To Entities,我试图在对象内的列表上使用LINQ。我会尽力解释: 我有一个叫做“评论”的东西。 在comment对象中,我有一个“User”对象列表,其中每个User对象都有一个“ID”字段 比如 Public class Comment { List<User> users; ... } 公共类注释{ 列出用户名单; ... } 然后,我得到一个用户ID列表(我们称之为UsersList,比如UsersList是一个list对象),并希望获得所有注释,其中UsersList中的所有用户都在该
Public class Comment {
List<User> users;
...
}
公共类注释{
列出用户名单;
...
}
然后,我得到一个用户ID列表(我们称之为UsersList,比如UsersList是一个listUsersList={1,2}
我想得到所有注释,其中id为1的用户和id为2的用户将出现在“用户”列表中
如何做到这一点
谢谢 就这么简单:
comments.Where(c => usersList.All(id => c.users.Any(user => user.Id == id)));
comments.Where(c => UsersList.All(uId => c.users.Contains(u => u.Id == uId)));
就这么简单:
comments.Where(c => UsersList.All(uId => c.users.Contains(u => u.Id == uId)));
以另一种方式查询它,即不询问“listOfIds中的userId”,而是询问“listOfIds.Contains(userId)”
以另一种方式查询它,即不询问“listOfIds中的userId”,而是询问“listOfIds.Contains(userId)”
我认为这是不对的。注释对象没有UserId属性。它有一个用户列表,其中每个用户都有UserId属性。我认为这是不对的。注释对象没有UserId属性。它有一个用户列表,其中每个用户都有UserId属性。这是有效的,但仅当其中一个UserId存在时给出,而不是同时给出两者。但这仍然是一个好的开始:)谢谢,我用
All
交换了Any
。好吧,它仍然不起作用-如果你计算出逻辑,你会看到它实际上做的是在用户列表相同的地方查找注释。i、 e-c.users与UsersList完全相同。仍然在解决它:)好吧,不完全是:)如果c.users包含的用户比UsersList中的多,它将不会返回它。但是如果它只包含UsersList的一部分,它将返回它。我再次更改了我的答案,现在基本上得到了与JotaBe相同的答案。我返回所有评论,其中id列表的所有用户都出现在评论的用户列表中。然而,评论列表中可能有更多的用户。这是可行的,但只在其中一个用户ID存在时给出,而不是同时给出两个用户ID。但这仍然是一个好的开始:)谢谢,我用All
交换了Any
。好吧,它仍然不起作用-如果你计算出逻辑,你会看到它实际上做的是在用户列表相同的地方查找注释。i、 e-c.users与UsersList完全相同。仍然在解决它:)好吧,不完全是:)如果c.users包含的用户比UsersList中的多,它将不会返回它。但是如果它只包含UsersList的一部分,它将返回它。我再次更改了我的答案,现在基本上得到了与JotaBe相同的答案。我返回所有评论,其中id列表的所有用户都出现在评论的用户列表中。然而,该评论的列表中可能有更多用户。