给定一个非常简单的string[],我试图用简单的LINQ语法完成以下内容RavenDB.
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" } }
};
Run Code Online (Sandbox Code Playgroud)
然后我可以很容易地查询这个,就像这样;
var items = session.Query<Item>().Search( n => n.Tags, "one" ).Take(3).ToList();
Run Code Online (Sandbox Code Playgroud)
这让我可以轻松地获取所有带有string[]我想要的标签的项目,但我想做相反的事情(显然,对于我的用例,情景要复杂得多,我为这个例子凝聚了它).
我想编写一个可以与Raven一起使用的LINQ查询,它将为我提供所有没有给定标记的对象.就像'倒置'搜索一样.
Contains()已从RavenDB中删除,因此我无法在其上使用反布尔值.到现在为止,我只需要进行查询,然后在结果上使用另一个LINQ命令,我觉得效率非常低.有谁知道如何做到这一点?
我也在RavenDB Google Groups邮件列表中发布此内容.
Session.Query<Item>()
.Where(x => !x.Tags.Any(tag => tag == "one"))
.ToList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1606 次 |
| 最近记录: |