MySql-Provider: Содержимое в Linq-Query не удалосьC#

Место общения программистов C#
Ответить
Anonymous
 MySql-Provider: Содержимое в Linq-Query не удалось

Сообщение Anonymous »

Я пытаюсь создать запрос Linq, который должен работать со списком строк «Содержит».
Следующий запрос без ошибок работает с поставщиками SqlServer и PostgreSQL:

Код: Выделить всё

IEnumerable listStringValues = listStringValues.Where ( x => x != null ).Select ( x => x.ToUpper () );

var query = _ctx.Invoices.Where ( x => ( x.FormatType.FormatTypeCode == FormatTypeCode.ER ||
x.FormatType.FormatTypeCode == FormatTypeCode.AR ||
x.FormatType.FormatTypeCode == FormatTypeCode.EA ||
x.FormatType.FormatTypeCode == FormatTypeCode.AA ) &&
listStringValues.Any ( y => y.Contains ( x.ExternalNumber.ToUpper () ) ) );
Теперь моя проблема заключается в том, что когда я использую этот запрос с поставщиком MySql (Pomelo.EntityFrameworkCore.MySql (8.0.2)), появляется следующее сообщение об ошибке:

Код: Выделить всё

The LINQ expression '[Microsoft.EntityFrameworkCore.Query.ParameterQueryRootExpression]' could not be translated. Additional information: Primitive collections support has not been enabled. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to 'AsEnumerable', 'AsAsyncEnumerable', 'ToList', or 'ToListAsync'. See https://go.microsoft.com/fwlink/?linkid=2101038 for more information.
Можете ли вы дать мне какие-нибудь советы о том, как реструктурировать запрос, чтобы вам не приходилось сначала загружать все счета на основе FormatTypeCode и затем использовать LinqToObjects для их фильтрации на основе списка listStringValues?
Заранее благодарим за помощь!
С уважением
SB
Я пытался разделить запрос, а также попробовал сначала загрузить все счета и выполнить фильтр через Содержит через LinqToObjects, и это сработало!
Я пытался разделить запрос, а также попробовал сначала загрузить все счета-фактуры и выполнить фильтр через Содержит через LinqToObjects, и это сработало!
>

Подробнее здесь: https://stackoverflow.com/questions/788 ... ery-failed
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»