给定一个非常简单的string[]
,我试图用RavenDB
的简单LINQ语法完成以下内容。
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查询,它将为我提供不具有给定标记的所有对象。就像'倒置'搜索一样。
包含()已从RavenDB中删除,因此我无法在其上使用反布尔值。到现在为止,我只需要进行查询,然后在结果上使用另一个LINQ命令,我觉得效率非常低。有谁知道如何做到这一点?
我也在RavenDB Google Groups邮件列表中发布此内容。
答案 0 :(得分:5)
Session.Query<Item>()
.Where(x => !x.Tags.Any(tag => tag == "one"))
.ToList();