按 RavenDB 中的整数列表排序

问题描述

我正在尝试在 RavenDB 中检索文档,我在其中按 int 列表进行排序。

Queryable = Queryable.OrderBy(dto => SearchIds.IndexOf(dto.PropertyId));

上面的代码是我从这个 post 中找到的一个解决方案。

但是,当客户端需要将 LINQ 解析为 RQL 时,它会给我一个错误。

System.InvalidOperationException: Cannot understand how to translate value(infrastructure.DataAccess.HolidayHome.Filtering.PropertyInformationFilteringService).SearchIds.IndexOf(dto.PropertyId)
   at Raven.Client.Documents.Linq.LinqPathProvider.GetPath(Expression expression) in C:\Builds\RavenDB-Stable-5.0\50009\src\Raven.Client\Documents\Linq\LinqPathProvider.cs:line 114
   at Raven.Client.Documents.Linq.RavenQueryProviderProcessor`1.GetMemberDirect(Expression expression) in C:\Builds\RavenDB-Stable-5.0\50009\src\Raven.Client\Documents\Linq\RavenQueryProviderProcessor.cs:line 554
   at Raven.Client.Documents.Linq.RavenQueryProviderProcessor`1.VisitOrderBy(LambdaExpression expression,Boolean descending) in C:\Builds\RavenDB-Stable-5.0\50009\src\Raven.Client\Documents\Linq\RavenQueryProviderProcessor.cs:line 2263
   at Raven.Client.Documents.Linq.RavenQueryProviderProcessor`1.VisitQueryableMethodCall(MethodCallExpression expression) in C:\Builds\RavenDB-Stable-5.0\50009\src\Raven.Client\Documents\Linq\RavenQueryProviderProcessor.cs:line 1914
   at Raven.Client.Documents.Linq.RavenQueryProviderProcessor`1.VisitMethodCall(MethodCallExpression expression) in C:\Builds\RavenDB-Stable-5.0\50009\src\Raven.Client\Documents\Linq\RavenQueryProviderProcessor.cs:line 1204
   at Raven.Client.Documents.Linq.RavenQueryProviderProcessor`1.VisitExpression(Expression expression) in C:\Builds\RavenDB-Stable-5.0\50009\src\Raven.Client\Documents\Linq\RavenQueryProviderProcessor.cs:line 202
   at Raven.Client.Documents.Linq.RavenQueryProviderProcessor`1.VisitQueryableMethodCall(MethodCallExpression expression) in C:\Builds\RavenDB-Stable-5.0\50009\src\Raven.Client\Documents\Linq\RavenQueryProviderProcessor.cs:line 1802
   at Raven.Client.Documents.Linq.RavenQueryProviderProcessor`1.VisitMethodCall(MethodCallExpression expression) in C:\Builds\RavenDB-Stable-5.0\50009\src\Raven.Client\Documents\Linq\RavenQueryProviderProcessor.cs:line 1204
   at Raven.Client.Documents.Linq.RavenQueryProviderProcessor`1.VisitExpression(Expression expression) in C:\Builds\RavenDB-Stable-5.0\50009\src\Raven.Client\Documents\Linq\RavenQueryProviderProcessor.cs:line 202
   at Raven.Client.Documents.Linq.RavenQueryProviderProcessor`1.VisitQueryableMethodCall(MethodCallExpression expression) in C:\Builds\RavenDB-Stable-5.0\50009\src\Raven.Client\Documents\Linq\RavenQueryProviderProcessor.cs:line 1808
   at Raven.Client.Documents.Linq.RavenQueryProviderProcessor`1.VisitMethodCall(MethodCallExpression expression) in C:\Builds\RavenDB-Stable-5.0\50009\src\Raven.Client\Documents\Linq\RavenQueryProviderProcessor.cs:line 1204
   at Raven.Client.Documents.Linq.RavenQueryProviderProcessor`1.VisitExpression(Expression expression) in C:\Builds\RavenDB-Stable-5.0\50009\src\Raven.Client\Documents\Linq\RavenQueryProviderProcessor.cs:line 202
   at Raven.Client.Documents.Linq.RavenQueryProviderProcessor`1.GetAsyncDocumentQueryFor(Expression expression,Action`1 customization) in C:\Builds\RavenDB-Stable-5.0\50009\src\Raven.Client\Documents\Linq\RavenQueryProviderProcessor.cs:line 3518
   at Raven.Client.Documents.Linq.RavenQueryProvider`1.ToAsyncDocumentQuery[TResult](Expression expression) in C:\Builds\RavenDB-Stable-5.0\50009\src\Raven.Client\Documents\Linq\RavenQueryProvider.cs:line 258
   at Raven.Client.Documents.LinqExtensions.ToListAsync[T](IQueryable`1 source,CancellationToken token) in C:\Builds\RavenDB-Stable-5.0\50009\src\Raven.Client\Documents\LinqExtensions.cs:line 313
   at infrastructure.DataAccess.HolidayHome.Filtering.PropertyInformationFilteringService.FilterBySearchCriteria() in C:\Users\Alex\git\search-service\infrastructure\DataAccess\HolidayHome\Filtering\PropertyInformationFilteringService.cs:line 31
   at infrastructure.DataAccess.HolidayHome.Commands.Property.PropertyInfoCommands.GetPropertyDtos(SearchResultCriteria searchCriteria,List`1 searchIds) in C:\Users\Alex\git\search-service\infrastructure\DataAccess\HolidayHome\Commands\Property\PropertyInfoCommands.cs:line 29
   at webapi.Controllers.v1.SearchController.RetrieveSearch(SearchResultCriteria searchResultCriteria) in C:\Users\Alex\git\search-service\web-api\Controllers\v1\SearchController.cs:line 265
   at webapi.Controllers.v1.SearchController.Get(SearchResultCriteria searchResultCriteria) in C:\Users\Alex\git\search-service\web-api\Controllers\v1\SearchController.cs:line 67
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper,ObjectMethodExecutor executor,Object controller,Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker,ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker,Task lastTask,State next,Scope scope,Object state,Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next,Scope& scope,Object& state,Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker,Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|19_0(ResourceInvoker invoker,Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint,Task requestTask,ILogger logger)
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)

有没有更好的整数列表排序方式?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)