Чувствительно к регистру где пункт в LINQtoSQL? - PullRequest
3 голосов
/ 28 июня 2009

Я хочу проверить, существует ли тег (с учетом регистра) в таблице SQL Server 2005 с использованием LINQtoSQL. Допустим, если в тегах существует тег «BEYONCE», я хочу, чтобы я мог добавить «beyonce» или «BeYOnce», но не «BEYONCE» снова. Вот запрос LINQ, который я написал:

From t In Context.Tags
Where String.Equals(t.Tag, myTag, StringComparison.Ordinal) = True 

Но в нем говорится, что метод 'Boolean Equals (System.String, System.String, System.StringComparison)' не поддерживает перевод на SQL. Какой еще способ найти регистр, чувствительный к регистру?

Ответы [ 2 ]

3 голосов
/ 28 июня 2009

Если база данных имеет параметры сортировки по умолчанию, то «бла» и «BLAH» будут равны. Я не думаю, что вы можете сделать это изначально с LinqToSQL, но вы могли бы выполнить запрос, который вызывает сортировку на уровне столбца ... т.е.

String tag = "beYONCE"; IEnumerable result = db.ExecuteQuery (typeof (Int32), «Выбрать * из таблицы1, где значение COLLATE Latin1_General_CS_AS = {0}», тег);

Этот запрос не вернет никаких результатов, потому что тег в таблице содержит beyonce, а не beYONCE. Изменение строкового тега на 'beyonce' вернет результат.

Если вы хотите изменить параметры сортировки вашей базы данных, попробуйте прочитать эту статью.

Надеюсь, это поможет.

0 голосов
/ 28 июня 2009

Я не думаю, что вы можете сделать это изначально с linqtosql.

Вы можете попробовать ExecuteExpression и некоторые чувствительные к регистру техники . Это не красиво, но это должно сделать работу.


редактировать Не уверен, что вы используете c # или vb, но вот немного кода на c #. Я предполагаю, что ваша базовая таблица называется Tag

IEnumerable<Tag> matches = Context.ExecuteQuery<Tag>(
    "Select * from Tag where Tag = {0} COLLATE Latin1_General_CS_AS", myTag
);

Черт, просто для полноты, вот и в vb.net: -)

dim matches as IEnumerable(Of Tag) = Context.ExecuteQuery(Of Tag)( _
    "Select * from Tag where Tag = {0} COLLATE Latin1_General_CS_AS", myTag _
)

Это почти то же самое, что и ответ Чалки .

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