在我的数据库中,我有一个包含文件名模式的表。
数据库中的模式:
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();
但就像我没有得到任何匹配。
答案 0 :(得分:2)
where System.Data.Linq.SqlClient.SqlMethods.Like(
type.FILENAME.ToUpper(), filename, '\\')
filename
为@"PKO__\___\_______\_%.TXT"
并注意\_
是文字 _
(通过我们指定的\
字符转义) - _
和{{ 1}} %
通配符分别类似于LIKE
和?
。
答案 1 :(得分:0)
我不认为?
是Transact-SQL中的占位符。要匹配单个字符,请使用_
。然后你还需要逃避你的下划线。我不知道L2S或L2E在这方面的表现如何。