Linq автоматически обрезает мою строку!

#c# #asp.net #linq

#c# #asp.net #linq

Вопрос:

У меня есть этот базовый запрос linq, в котором я хочу получить город из базы данных. Проблема в том, что моя строка поиска обрезается без моего запроса об этом. Я максимально упростил ее. Пример:

 var firstCity = 
    from city in db.Cities
    where city.City_Code == "LAS "
    select city;
  

Город.City_Code — это «LAS», а не «LAS», тем не менее, он получает город с City_Code «LAS».

Как мне это решить? Я также пробовал Equals, но результат тот же.

Комментарии:

1. Вы используете Linq2SQL или EF?

2. Вероятно, это побочный эффект заполнения, выполняемого в базе данных .

Ответ №1:

Это не проблема с LINQ. Так база данных сравнивает строки.

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

Смотрите: http://support.microsoft.com/kb/316626

Вы могли бы обойти это, добавив другой символ к строкам:

 where city.City_Code   "." == "LAS ."