c# - RavenDB Collection "in"集合查询

标签 c# ravendb

我需要执行一个查询来检查一个集合是否在给定集合中,就像常规操作一样,但对于集合。

class Post
{
    public string[] Tags {get;set;}
}


session.Queury<Post>.Where(x=>x.Tags.in(new[]{".net","c#","RavenDB"})).ToList();

所以如果我在我的数据库中有:

  new Post{Tags= new[]{"C#",".net"}};

它会被退回

但如果我有:

  new Post{Tags= new[]{"C#",".net","SQLServer"}};

不会退还。

更新:

我想做的是:

  session.Query<Post>()
  .Where(x => x.Tags.All(y => y.In(new[] { "C#", ".net", "RavenDB" })))
  .ToList();

但我遇到了 System.NotSupportedException。

最佳答案

我设法找到解决方案:

static void Main(string[] args)
{
    var sessionStore = new EmbeddableDocumentStore
    {
        RunInMemory = true,
        UseEmbeddedHttpServer = true,
        Conventions =
        {
            DefaultQueryingConsistency = ConsistencyOptions.AlwaysWaitForNonStaleResultsAsOfLastWrite
        }
    };

    sessionStore.Initialize();

    using (var session = sessionStore.OpenSession())
    {
        var allTags = new[] {"C#", ".net", "RavenDB", "Linux", "Mac"};
        var tagsCollection = new[] {"C#", ".net", "RavenDB"};

        var complementTagsCollection = allTags.Except(tagsCollection).ToList();

        session.Store(new Post
        {
            Tags = new List<string>{"C#",".net"}
        });

        session.SaveChanges();

        // Posts where all their tags are in tagsCollection
        var result = session.Query<Post>().Where(x => !x.Tags.In(complementTagsCollection)).ToList();
    }
}

关于c# - RavenDB Collection "in"集合查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25535363/

相关文章:

c# - 使用 Any 的 LINQ RavenDB 子集合查询,不能在查询中包含非索引变量

c# - MigrateDatabaseToLatestVersion 没有运行 Seed() 方法

c# - 具有复杂映射的 IConfigurationSection 集合中的 AutoMapper 映射

ravendb - 返回 IQueryable 但需要 Raven 统计信息才能插入 TotalResults header

.net - elasticsearch或RavenDB在插入统计引擎/随机森林方面会更好吗?

c# - 在 Ubuntu 中读取 pfx 证书以创建 X509

c# - 如果文件名有单引号 C# javascript 不会被执行

c# - CancellationTokenSource或AutoResetEvent

c# - 在 C# 中连接到外部 SQL 数据库

production-environment - 有人在生产环境中使用RavenDB吗?