gpt4 book ai didi

c# - 如何检索在 linq 中使用所有提供的标签标记的项目?

转载 作者:太空宇宙 更新时间:2023-11-03 20:39:51 24 4
gpt4 key购买 nike

我好像遇到了这个问题。我有一个带有 ID 的任务表和一个标签表,该表具有标签字段和任务表的外键约束。

我希望能够通过标签执行和搜索任务。因此,例如,如果我搜索带有“可移植性”和“测试”标签的任务,我不想要带有“可移植性”标签而不是“测试”标签的任务。

我尝试了以下语法:

 var tasks = (from t in _context.KnowledgeBaseTasks
where t.KnowledgeBaseTaskTags.Any(x => tags.Contains(x.tag))
select KnowledgeBaseTaskViewModel.ConvertFromEntity(t)
).ToList();

这当然是进行 OR 搜索,而不是 AND 搜索。我不知道如何将其实际切换为 AND 搜索。

编辑我还需要能够搜索任务包含的 X 标签中的 2 个。因此,如果任务被标记为“bugfix”、“portability”、“testing”并且我搜索“testing”和“portability”,该任务仍会显示。

最佳答案

使用 All 而不是 Any;为了只选择 KnowledgeBaseTasks,它具有所有 tags(但可能更多);反转表达式:

var tasks = (from t in _context.KnowledgeBaseTasks
where tags.All(tag => t.KnowledgeBaseTaskTags.Contains(tag))
select KnowledgeBaseTaskViewModel.ConvertFromEntity(t)
).ToList();

关于c# - 如何检索在 linq 中使用所有提供的标签标记的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3478874/

24 4 0