none
Сравнение строк в конструкции WHERE без учёна определённых символов RRS feed

  • Вопрос

  • Имеется таблица со строковым столбцом в котором хранятся настоящие коды идентификации чего-то. Имеется также произвольная строка, якобы кода идентификации, по которой нужно найти все записи таблицы советующие данному коду. Кароче, суть в том, что эти две сущности могут отличаться по символам, но считаться идентичными, например w67/1 и w671 идентичные, или например 1540-2622 и 15402622 тоже идентичные. Грубо говоря, значимым при сравнении является алфавитно-цифровые символы, а всякие прочие символы учитывать не нужно.

    Выдуманное мной решение заключается в том, что при отборе обе сущности прогоняются через string.Replace('/', string.Empty).Replace('-', string.Empty).Replace... Исходная строка обрабатывается в приложении, а вот столбец в базе данных через LINQ уходит в SQL функцию Replace('/' Replace(..., что жутко тормознуто в итоге.

    Грубо говоря, как сравнить две строки, без учёта определённых символов по фэншую да ещё и на L2S?


    PS: на всякий случай мой пример кода:

    var _tecDocVendorCode = detail.VendorCode.Replace(" ", string.Empty).Replace("/", string.Empty).Replace(",", string.Empty).Replace(".", string.Empty).Replace("-", string.Empty).Replace("#", string.Empty).Replace("(", string.Empty).Replace(")", string.Empty).Replace("+", string.Empty);
    
    myDataContext.myTable.Where(c => c.VendorCode.Replace(" ", string.Empty).Replace("/", string.Empty).Replace(",", string.Empty).Replace(".", string.Empty).Replace("-", string.Empty).Replace("#", string.Empty).Replace("(", string.Empty).Replace(")", string.Empty).Replace("+", string.Empty) == _tecDocVendorCode);



    • Изменено Radu2000 17 декабря 2014 г. 11:14
    17 декабря 2014 г. 11:04

Ответы

Все ответы