C# RavenDB Linq操作无效。ToUpper不变量()

C# RavenDB Linq操作无效。ToUpper不变量(),c#,linq,ravendb,C#,Linq,Ravendb,我正在尝试使用RavenDB的LINQ查询中的ToUpperInvariant()。我收到一个无效操作异常: 无法理解如何转换server.Name.ToUpperInvariant() 查询如下。为了让我能够在这里按名字匹配,需要发生什么?这在使用RavenDB的查询中是可能的吗 public ApplicationServer GetByName(string serverName) { return QuerySingleResultAndCacheEtag(session =&g

我正在尝试使用RavenDB的LINQ查询中的
ToUpperInvariant()
。我收到一个无效操作异常

无法理解如何转换server.Name.ToUpperInvariant()

查询如下。为了让我能够在这里按名字匹配,需要发生什么?这在使用RavenDB的查询中是可能的吗

public ApplicationServer GetByName(string serverName)
{
    return QuerySingleResultAndCacheEtag(session => session.Query<ApplicationServer>()
        .Where(server => server.Name.ToUpperInvariant() == serverName.ToUpperInvariant()).FirstOrDefault())
        as ApplicationServer;
}

protected static EntityBase QuerySingleResultAndCacheEtag(Func<IDocumentSession, EntityBase> func)
{
    if (func == null) { throw new ArgumentNullException("func"); }

    using (IDocumentSession session = Database.OpenSession())
    {
        EntityBase entity = func.Invoke(session);
        if (entity == null) { return null; }
        CacheEtag(entity, session);
        return entity;
    }
}
公共应用程序服务器GetByName(字符串服务器名) { 返回QuerySingleResultAndCacheEtag(session=>session.Query() .Where(server=>server.Name.ToUpperInvariant()==serverName.ToUpperInvariant()).FirstOrDefault() 作为应用服务器; } 受保护的静态EntityBase QuerySingleResultAndCacheEtag(Func Func) { 如果(func==null){抛出新的ArgumentNullException(“func”);} 使用(IDocumentSession session=Database.OpenSession()) { EntityBase实体=函数调用(会话); 如果(entity==null){return null;} CacheEtag(实体、会话); 返回实体; } }
作为异常状态,服务器不理解
ToUpperInvariant()
。据我所知,RavenDB使用自定义的小写KeyWordAnalyzer,因此默认情况下查询不区分大小写。了解更多详细信息。

好的,很酷,我试图通过转换为大写来进行比较,这甚至是不必要的。我只是在没有转换的情况下尝试了一下,结果成功了。非常感谢。非常感谢。我试着做同样的事情;我根本不知道这件事。Doh.也期待“类似编程语言”的比较行为,但遇到了同样的问题。我想我应该期待“类似数据库”的比较,默认情况下通常忽略大小写。谢谢