在linq中查找至少有一个标记对象的用户?

时间:2011-09-04 08:06:37

标签: sql sql-server linq

我有一个对象用户。

User 1..N Tags(string).

例如,我有一个Tag对象列表。如何查询用户以查找标签列表旁边至少有1个标签的所有用户?

提前致谢:)

1 个答案:

答案 0 :(得分:3)

假设您的代码段意味着您拥有Tags类型的属性Foo<string>,其中Foo是某种序列类型,您可以使用:

var taggedUsers = users.Where(user => tags.Any(tag => user.Tags.Contains(tag));

(实际上,假设你有一个字符串列表为Tags - 这个问题有点不清楚。但是,希望它足以让你解决。)

编辑:好的,根据评论中的详细信息,我认为您可能只需要:

var taggedUsers = users.Where(user => tags.Any(tag => user.Tags
                                                          .Select(t => t.Value)
                                                          .Contains(tag));