c# – RavenDb“In”运算符如何工作?
发布时间:2020-12-15 08:10:40 所属栏目:百科 来源:网络整理
导读:我可能不明白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.St
我可能不明白RavenDb中的“In”扩展方法是如何工作的.我认为它相当于SQL世界中的IN命令,例如数字IN(1,2,3).但它表现得很奇怪.
// i have 3 records - two with Normal severity,one with Low severity using (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 correct using (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 correct using (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 correct using (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 severity using (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 matters using (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时,最后两个查询的行为正确并返回结果. 解决方法
你正在遇到陈旧的索引,这就是你得到奇怪结果的原因. 您需要等待索引首先完成.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |