EF Core: выражение LINQ не может быть переведено - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь реализовать запрос в EF Core, в котором мне нужно получить данные, где любое имя в строковом массиве содержится в имени объекта данных. Вот пример кода:

            var searchKeys = search.Split(' ');
            var objects = _db.Objects
                .Where(o => searchKeys.Any(k => o.name.Contains(k))))  
                .OrderBy(o => o.Name)
                .Select o

Но запрос не может быть переведен, что приводит к следующей ошибке:

Выражение LINQ 'DbSet .Where (o => __searchKeys_1 .Any (k => __Functions_2 .Contains (_: o.Name, propertyReference: k))) 'не удалось перевести. Либо переписать запрос в форме, которую можно перевести, либо переключиться на оценку клиента явно, вставив вызов либо в AsEnumerable (), AsAsyncEnumerable (), ToList (), либо в ToListAsyn c (). См. https://go.microsoft.com/fwlink/?linkid=2101038 для получения дополнительной информации.

Как я могу создать запрос, чтобы исправить ошибку?

1 Ответ

1 голос
/ 18 февраля 2020

Это работает для меня:

 var searchKeys = search.Split(' ');
 var objects = _db.Objects
     .Where(o => searchKeys.Any(k => o.Name.Contains(k)))
     .OrderBy(o => o.Name)
     .Select(o => o);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...