1

IRavenQueryable.Search メソッドを使用して有効な検索結果を返すクエリがあります。ただし、.Where メソッド呼び出しを介してこれらの結果をさらにフィルター処理し、一致する ProjectId を持つものだけを含むように検索結果をフィルター処理したいと考えています。

私のオブジェクト構造は、それぞれが Issue エンティティのコレクションを含む Project エンティティのセットです。

私のインデックスは、次のような課題検索結果の予測を作成します。

{ID、キー、概要、説明、ProjectId、ProjectKey、クエリ}

Query プロパティは、キーワード検索で使用される object[] です。

キーワード検索を実行すると:

var results = session.Query().AsProjection().Search(x => x.Query, "キーワード");

正しい結果が返ってきます。しかし、Where メソッドも適用しようとすると、次のようになります。

results = results.Where(i => i.ProjectId == SelectedProject.Id);

結果をフィルタリングするのではなく、一致するプロジェクト ID を持つ他のすべての結果を含めます。

このシナリオで、Linq または RavenDB の IRavenQueryable に OR ではなく AND を強制的に適用する正しい方法は何ですか?

4

1 に答える 1

1

この質問を投稿した後、stackoverflow の他の場所で答えを見つけることができました。

解決策は次のとおりです。

Search と Where を組み合わせた ravendb

簡単に言えば、Search メソッドは追加のオプション パラメーター [options] を提供して、検索をクエリ内の他の where 句と組み合わせる方法を指定できるようにします。デフォルトは SearchOptions.Or なので、明示的に options: SearchOptions.And に設定する必要があります。

于 2012-08-17T18:58:18.347 に答える