3

我正在尝试通过一对多表检索文档 ID。我想在 where 子句中使用 List 来查找与列表中的每个元素连接的所有 id。

List<int> docIds = (from d in doc
                      where _tags.Contains(d.Tags)
                      select d.id).ToList<int>();

我知道包含的内容一定不正确,但我无法解决。如果我尝试使用 foreach,我无法确定如何检查文档是否包含所有标签。

4

2 回答 2

2

如果您希望所有内容d.Tags都应包含在_tags列表中,您可以尝试:

List<int> docIds = (from d in doc
                      where d.Tags.All(t => _tags.Contains(t))
                      select d.id).ToList<int>();

如果你想要它d.Tags应该包含_tags你需要的所有项目:

List<int> docIds = (from d in doc
                      where _tags.All(t => d.Tags.Contains(t))
                      select d.id).ToList<int>();

但我不知道它是如何通过 EF 转换为 SQL 的,因此您可能需要在客户端站点上对其进行评估。

于 2012-08-20T08:27:28.337 回答
0

使用连接:

List<int> docIds = (from d in doc
from t in tags
where d.Tags.Contains(t)
select d.id).ToList<int>();
于 2012-08-20T08:31:38.347 回答