C# RavenDB Linq操作无效。ToUpper不变量()
我正在尝试使用RavenDB的LINQ查询中的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
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.也期待“类似编程语言”的比较行为,但遇到了同样的问题。我想我应该期待“类似数据库”的比较,默认情况下通常忽略大小写。谢谢