رافينB فهرس الترحيل
-
25-09-2019 - |
سؤال
لدي استعلام LINQ AS
var mdls = (from mdl in query dbSession.Query<MyModel>("MyIndex")
orderby mdl.Name
select dept).Skip(page.Value).Take(4);
حيث "myindex" هو فهرس بسيط محدد في RavendB. أعلم أنه أثناء الاستعلام عن فهرس في RavendB ، فإنه يعيد "TotalResults". يرى هنا
كيف يمكنني الحصول على نتيجة الاستعلام التي لديها TotalResult
منشأه؟
المحلول
إذا كنت تقوم بتنفيذ lucenequery ، فستحصل على مستندات مستخدمة تحتوي على خاصية QueryResult التي تحتوي على TotalResults حتى تتمكن من الوصول إليها على النحو التالي:
var documentQuery = (from mdl in query dbSession.LuceneQuery<MyModel>("MyIndex")
orderby mdl.Name
select dept).Skip(page.Value).Take(4);
var totalResults = documentQuery.QueryResult.TotalResults;
إذا كنت تقوم بتنفيذ استعلام LINQ بدلاً من ذلك ، فيمكنك الاتصال بـ Count () على الاستعلام قبل الحد من ذلك بالتخطي والاتخاذ:
var linqQuery = (from mdl in query dbSession.Query<MyModel>("MyIndex")
orderby mdl.Name
select dept);
var totalResults = linqQuery.Count();
var pageOfResults = linqQuery.Skip(page.Value).Take(4);
نصائح أخرى
تحتاج إلى فعل شيء كهذا في نهاية استفسارك
.Customize(x => x.TotalResult)
خاصية TotalResult متوفرة فقط على LuceneQuery ، وليس استعلام LINQ.
يبدو أنه يمكنك الحصول على QueryResult
عبر session.LuceneQuery<YouModel>("YourIndex")
وليس من session.Query<YourModel>("YourIndex")
. لكنني أتساءل لماذا يستخدم المرء session.Query<YourModel>("YourIndex")
?