我正在尝试通过一对多表检索文档ID。我想在where子句中使用List来查找与列表中每个元素相关的所有id。
List<int> docIds = (from d in doc
where _tags.Contains(d.Tags)
select d.id).ToList<int>();
我知道包含的内容必须不正确,但我无法解决。如果我尝试foreach,我无法弄清楚如何检查文档是否包含所有标记。
答案 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>();