C # SQL для соответствия шаблону LINQ - PullRequest
1 голос
/ 28 июня 2011

В моей базе данных есть таблица с шаблоном имени файла.

Шаблон в базе данных:

PKO??_??_??????_*.TXT

Имя файла:

PKO10_11_123456_example.TXT

Теперь, когда какой-то файл импортирован в мою программу, мне нужно сопоставить его с этими шаблонами в базе данных.Я знаю, что Directory.GetFiles() имеет эту опцию для добавления шаблона и возвращает все файлы, которые будут соответствовать этому шаблону.Есть ли способ, которым я могу сделать это в запросе LINQ?Я попробовал Containes() вот так:

 var _cardType = (from type in context.OCA_CARD_TYPEs
     where type.FILENAME.ToLower().Contains(fileName.ToLower())
     select type).Single();

Но вот так я не получил ни одного совпадения.

Ответы [ 2 ]

2 голосов
/ 28 июня 2011
where System.Data.Linq.SqlClient.SqlMethods.Like(
         type.FILENAME.ToUpper(), filename, '\\')

с filename как @"PKO__\___\_______\_%.TXT"

и обратите внимание, что \_ - это литерал _ (экранированный указанным нами символом \) - _ и % являются символами LIKE, похожими на ? и * соответственно.

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

Я не думаю, что ? является заполнителем в Transact-SQL.Чтобы соответствовать одному символу, используйте _.Тогда вам также нужно избежать подчеркивания.Я не знаю, как L2S или L2E ведут себя в этом.

Подробнее

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