在Entity Framework的where子句中使用List

时间:2012-08-20 08:19:39

标签: c# list entity-framework-4 one-to-many where-clause

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

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

我知道包含的内容必须不正确,但我无法解决。如果我尝试foreach,我无法弄清楚如何检查文档是否包含所有标记。

2 个答案:

答案 0 :(得分: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的,所以也许你需要在客户端网站上对它进行评估。

答案 1 :(得分:0)

使用联接:

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