我有一个使用 IRavenQueryable.Search 方法返回有效搜索结果的查询。但是,我想通过 .Where 方法调用进一步过滤这些结果,以便随后过滤搜索结果以仅包括那些具有匹配 ProjectId 的结果。
我的对象结构是一组项目实体,每个实体都包含一组问题实体。
我的索引创建问题搜索结果的投影,如下所示:
{Id、Key、Summary、Description、ProjectId、ProjectKey、Query}
Query 属性是关键字搜索使用的 object[]。
当我运行关键字搜索时:
var results = session.Query().AsProjection().Search(x => x.Query, "some key word");
我得到了正确的结果。但是当我尝试也应用 Where 方法时:
结果 = results.Where(i => i.ProjectId == SelectedProject.Id);
它不会过滤结果,而是包含具有匹配项目 ID 的所有其他结果。
在这种情况下,强制 Linq 或 RavenDB 的 IRavenQueryable 应用 AND 而不是 OR 的正确方法是什么?