SearchExtensions icon indicating copy to clipboard operation
SearchExtensions copied to clipboard

In NetCore 3.0 project, ToRanked not working

Open irsali opened this issue 4 years ago • 2 comments

Code looks like below:

return await _entities.Search(x => x.Propname).Containing(keywords.Split(' '))
                 .ToRanked().OrderByDescending(x => x.Hits)
                 .Select(x => x.Item)
                 .ToListAsync();

It seems to me the query created has some kind of issue:

System.InvalidOperationException: The LINQ expression 'DbSet<TbHotelProperty> .Where(t => t.Propname.Contains("omni")) .OrderByDescending(t => new Ranked<TbHotelProperty>{ Hits = (t.Propname ?? "").Length - (t.Propname ?? "").Replace( oldValue: "omni", newValue: "").Length / 4, Item = t } .Hits)' could not be translated. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to either AsEnumerable(), AsAsyncEnumerable(), ToList(), or ToListAsync(). See https://go.microsoft.com/fwlink/?linkid=2101038 for more information.

Let me know if any other information could be useful to understand the problem.

irsali avatar Mar 05 '20 07:03 irsali

I've the same problem

This code in the tutorial

var result = context.Users.Search(x => x.FirstName, x => x.LastName, x.MiddleName) .Containing("John") .ToRanked() .OrderByDescending(r => r.Hits) // Order by Hits property of IRanked<User> .Take(10);

doesn't work and an exception raises with this message

could not be translated. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to either AsEnumerable(), AsAsyncEnumerable(), ToList(), or ToListAsync(). See https://go.microsoft.com/fwlink/?linkid=2101038 for more information.

it works only when you convert the link query to Enumerable before calling OrderByDescending() but that doesn't make sense at all because by this way I get a lot of un needed rows from the database

iemo2007 avatar Mar 16 '21 09:03 iemo2007

This issue should not occur when using Microsoft.EntityFrameworkCore.SqlServer Version >= 3.1.3

tommysor avatar Oct 25 '21 19:10 tommysor