Знак равенства в LINQ - PullRequest
       13

Знак равенства в LINQ

1 голос
/ 09 февраля 2009

Сервер SQL выполняет опцию COLLATE на основе запросов, поэтому вы можете определить, как будет выполняться сравнение (с учетом регистра или нет). Вы можете сделать это при создании таблицы или при выполнении запроса.

Как я могу контролировать параметры сортировки во время запросов LINQ to SQL? Будут ли мои запросы всегда нечувствительны к регистру, когда я сделаю table.Column == stringValue сравнение?

Ответы [ 2 ]

3 голосов
/ 09 февраля 2009

Я не слишком много работаю с опцией COLLATE, но приму лучший ответ на этот вопрос.

Согласно этой статье :

LINQ to SQL не учитывает настройки сервера при переводе запросов.

Если COLLATE - это параметр базы данных / таблицы / столбца, он должен быть установлен в базе данных и готов к работе при подключении.

Если COLLATE является настройкой соединения, вы можете получить соединение с вашим datacontext и выполнить команду для его установки. Хорошее место для этого может быть метод partial void OnCreated.

0 голосов
/ 09 февраля 2009

Вы должны помнить, что L2S - это система объектно-реляционного отображения, поэтому она пытается сравнивать объекты и переводить в SQL. В L2S, если вы хотите сравнить две строки, вы должны ToLower () обе для сравнения.

Еще одна вещь, которая была для меня «уловкой», заключалась в том, что в L2S сравнение строк не будет оцениваться правильно, если значение сравнения, которое вы предоставляете, равно нулю. Итак, в вашем примере, если table.Column равно null и stringValue тоже, ваш запрос не будет возвращать правильные результаты (я основываю это на предположении, что stringValue является переменной, определенной в вашем коде). Чтобы сравнить строку со значением NULL в L2S, необходимо явно сравнить ее со значением NULL: table.Column == null.

проверить статью

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