Linq-запрос с 'åäö' возвращает все элементы в таблице - PullRequest
2 голосов
/ 06 февраля 2020

У меня есть базовая c функция поиска на моем сайте. Все работает хорошо, за исключением случаев, когда пользователи ищут только один символ из этих трех символов «ääö», тогда запрос возвращает все элементы в таблице. Как это может быть? Это символы переводит что-то еще в t- sql?

Dim sanitizedstring As String = helpclass.RemoveInvalidFileNameChars(txtSearch.Text, True)

Dim getArtists = From s In dc.tbl_artists _
                 Where s.ArtistName.ToString.ToLower.Contains(sanitizedstring) _
                 Select s

РЕДАКТИРОВАТЬ: Собрание БД составляет Latin1_General_CI_AI.

Ответы [ 2 ]

2 голосов
/ 06 февраля 2020

Такое поведение, по-видимому, игнорирование некоторых символов, вероятно, связано с сопоставлением.

, поскольку ваше сопоставление акцентировано нечувствительно (AI), åäö будет рассматриваться БД так же, как aao для текстового запроса.

Это, вероятно, является источником проблемы (обратите внимание, что, фактически не зная ваших данных, мы не можем быть уверены в диагнозе c)

Решение:

Изменить параметры сортировки база данных должна быть чувствительной к акценту (AS).

Например, Latin1_General_CI_AS может быть разумным первым тестом.

Подробнее

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

Являются ли какие-либо из этих символов допустимыми для имен файлов согласно RemoveInvalidFileNameChars?

Если нет, RemoveInvalidFileNameChars, вероятно, возвращает пустую строку, а Contains всегда верно для пустой строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...