Не может быть запроса linq без учета регистра для возврата строки, начинающейся с буквы из базы данных postgresql в Asp. Net Core - PullRequest
0 голосов
/ 15 марта 2020

Здравствуйте. У меня есть таблица в postgresql, и я хочу запросить таблицу, чтобы получить PublisherName, начинающееся с данной буквы. Допустим, Тони, если пользователь вводит T или t, я должен отправить обратно Тони, поэтому мне нужен запрос без учета регистра

Вот часть кода, с которой я работаю

        [HttpGet("{letters}")]
        public async Task<List<Publisher>> getPublisher(string letters){
            using(var context = new BookStoresDbContext()){
                return await context.Publishers.Where(x=>x.PublisherName.StartsWith(letters)).ToListAsync();
            }
        }

Это работает нормально, но у меня есть Тони в моей базе данных, поэтому, если пользователь вводит T, все хорошо, но если он вводит t, он возвращает пустой список

Теперь я изменил код на этот

        [HttpGet("{letters}")]
        public async Task<List<Publisher>> getPublisher(string letters){
            using(var context = new BookStoresDbContext()){
                return await context.Publishers.Where(x=>x.PublisherName.StartsWith(letters,StringComparison.OrdinalIgnoreCase)).ToListAsync();
            }
        }

Добавление StringComparison.OrdinalIgnoreCase, но я думаю, что ему трудно переводить этот запрос для postgresql, потому что я получаю эту ошибку на почтальоне

System.InvalidOperationException: The LINQ expression 'DbSet<Publisher>
    .Where(p => p.PublisherName.StartsWith(
        value: __letters_0, 
        comparisonType: OrdinalIgnoreCase))' 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.
   at Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor.<VisitMethodCall>g__CheckTranslated|8_0(ShapedQueryExpression translated, <>c__DisplayClass8_0& )

Как я могу решить эту проблему?

...