EF Core 3.1.x : The LINQ expression could not be translated. Either rewrite the query in a form that can be translated

Nim*_*iya 6 entity-framework-core-3.1

EF Core 3.1.x:

I would not like to load all products in memory, which below queries do! Guess what happen if i do have millions of products in table?

var products = context.Products.ToList();
products = products.Where(p => p.Name.Contains("xxx")).ToList();
Run Code Online (Sandbox Code Playgroud)

And below query throws The LINQ expression 'DbSet-Product- .Where(b => b.Name.Contains( value: "xxx", comparisonType: InvariantCultureIgnoreCase))' 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().

var products = context.Products.Where(p => p.Name.Contains("xxx", StringComparison.InvariantCultureIgnoreCase)).ToList();
Run Code Online (Sandbox Code Playgroud)

Related Issue on github: #19087

Can anyone help me out. how to filter data with server side evaluation with ef core 3.1.x?

Nim*_*iya 8

EF Core 确实为服务器端评估翻译 Contains - 但不是接受 StringComparison.InvariantCultureIgnoreCase(或任何其他 StringComparison)的重载。

在这里关闭问题