c# – RavenDb“In”运算符如何工作?

c# – RavenDb“In”运算符如何工作?,第1张

概述我可能不明白RavenDb中的“In”扩展方法是如何工作的.我认为它相当于SQL世界中的IN命令,例如数字IN(1,2,3).但它表现得很奇怪. // i have 3 records - two with Normal severity, one with Low severityusing (var session = store.OpenSession()){ session.S 我可能不明白Ravendb中的“In”扩展方法是如何工作的.我认为它相当于sql世界中的IN命令,例如数字IN(1,2,3).但它表现得很奇怪.
// i have 3 records - two with normal severity,one with Low severityusing (var session = store.OpenSession()){    session.Store(new TestObject { name = "o1",Severity = Severity.normal });    session.Store(new TestObject { name = "o2",Severity = Severity.Low });    session.Store(new TestObject { name = "o3",Severity = Severity.normal });    session.SaveChanges();}// this writes the Low severity record,it seems correctusing (var session = store.OpenSession()){    var data = session.query<TestObject>()        .Where(o => o.Severity.In(new[] { Severity.Low }))        .OrderBy(o => o.name).ToList();    data.ForEach(r => Console.Writeline(r));}// this writes also the Low severity record,it still seems correctusing (var session = store.OpenSession()){    var data = session.query<TestObject>()        .Where(o => o.Severity.In(new[] { Severity.Low,Severity.High }))        .OrderBy(o => o.name).ToList();    data.ForEach(r => Console.Writeline(r));}// this writes all records,still seems correctusing (var session = store.OpenSession()){    var data = session.query<TestObject>()        .Where(o => o.Severity.In(            new[] { Severity.High,Severity.Low,Severity.normal }))        .OrderBy(o => o.name).ToList();    data.ForEach(r => Console.Writeline(r));}// but this does not write anything // despite there are 2 records with normal severityusing (var session = store.OpenSession()){    var data = session.query<TestObject>()        .Where(o => o.Severity.In(new[] { Severity.High,Severity.normal }))        .OrderBy(o => o.name).ToList();    data.ForEach(r => Console.Writeline(r));}// and this does not write anything either,// I just trIEd whether the order of values in the array mattersusing (var session = store.OpenSession()){    var data = session.query<TestObject>()        .Where(o => o.Severity.In(new[] { Severity.normal,Severity.High }))        .OrderBy(o => o.name).ToList();    data.ForEach(r => Console.Writeline(r));}

或者我在Ravendb / Lucene引擎中发现了一个错误?

编辑

我发现了另一件奇怪的事.它必须按照枚举成员的字母顺序执行某些 *** 作.当我将Severity.normal重命名为Severity.A时,最后两个查询的行为正确并返回结果.
当我将Severity.normal重命名为Severity.La时,它仍然有效(因为La< Low).但是当我将Severity.normal重命名为Severity.Lu(Lu> Low)时,它会中断并且最后两个查询不再返回结果.原始样本不起作用,因为正常>低.但我仍然想知道为什么会这样,因为它对我没有意义.

解决方法 你正在遇到陈旧的索引,这就是你得到奇怪结果的原因. 您需要等待索引首先完成. 总结

以上是内存溢出为你收集整理的c# – RavenDb“In”运算符如何工作?全部内容,希望文章能够帮你解决c# – RavenDb“In”运算符如何工作?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1247249.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存