2012-02-27 5 views
3

非常に単純なstring[]が与えられたので、私はRavenDBという単純なLINQ構文で以下を達成しようとしています。RavenDB、LINQ、select from string []配列に指定された文字列が含まれていない

public class Item { 
    public string[] Tags { get; set; } 
} 
var list = new List<Item> { 
    new Item { Tags = new string[] { "one", "two", "three" } }, 
    new Item { Tags = new string[] { "one", "two" } }, 
    new Item { Tags = new string[] { "one" } } 
}; 

私はこれを簡単にクエリできます。

var items = session.Query<Item>().Search(n => n.Tags, "one").Take(3).ToList(); 

私は、シナリオが多く、より複雑であるこれは私は簡単に私が欲しい彼らのstring[]でタグでのすべてのアイテムを取得することができますが、私は私のユースケースのために、明らかに(反対のことをやってみたいですこの例では凝縮してください)。

ではなく、に与えられたタグを持つすべてのオブジェクトを私に与えるRavenで動作するLINQクエリを書きたいと思っています。逆の検索のように。

Contains()がRavenDBから削除されました。逆ブール値を使用できません。これまでは、クエリを実行してから別のLINQコマンドを使用する必要がありましたが、これは非常に非効率的です。誰もこれを達成する方法を知っていますか?

私はRavenDB Google Groupsメーリングリストでもこれを投稿しています。

答えて

5
Session.Query<Item>() 
     .Where(x => !x.Tags.Any(tag => tag == "one")) 
     .ToList(); 
+0

-insert facedesk-ありがとう。私はそれをやっていないとは信じられません。私は50種類以上のものを試しましたが、最も単純なものは考えませんでした。 – Ciel

関連する問題