Проблема обработки одинарная кавычка в содержит функцию преобразования языка LINQ в C#
Привет, я столкнулся с проблемой при поиске записи с помощью LINQ. Проблема заключается в том, что когда строка поиска содержит одинарную кавычку, например //*[local-name()='ClaimInfo'], то я получаю 0 результат для него даже после того, как у меня есть запись в таблице с тем же значением. Пример блока кода приведен ниже
var expression = "//*[local-name()='ClaimInfo']" var vList= (from vocab in db.Vocabularies where vocab.Expression.ToUpper().Contains(expression.ToUpper()) select vocab).ToList();
Что я уже пробовал:
Я попробовал заменить функцию, как показано в приведенном ниже коде, но никакого результата для меня не было. :-(
var vList= (from vocab in db.Vocabularies where vocab.Expression.Replace("'","''").ToUpper().Contains(expression.Replace("'", "''").ToUpper()) select vocab).ToList();
Я уже пробовал заменить("'", @"/'") и заменить("'", "") тоже, но безуспешно.
Alek Massey
Вероятно, подозреваемые, что ' - это не единственная цитата в вашей БД или - это не тире в вашей БД.
Отладьте свое приложение и посмотрите, как выглядит vList с более широким выражением "contains".
Что-то вроде,
var expression = "ClaimInfo"var vList= (from vocab in db.Vocabularies where vocab.Expression.ToUpper().Contains(expression.ToUpper()) select vocab).ToList();
Сравните этот результат с использованием следующего:
var expression = "'ClaimInfo'"
и
var expression = "local-name"
RohitVaidya
Спасибо Алеку за комментарий. "- это только одинарная цитата, и то же самое верно и в отношении - а также. Перед публикацией вопроса я также отладил и попробовал другое решение, как я уже упоминал в этом посте