C# 实体框架:如何表达包含[0-9]的LIKE语句
我想构造一个LINQ查询,用于根据like条件选择行的EF上下文。 据我所知,您可以使用C# 实体框架:如何表达包含[0-9]的LIKE语句,c#,asp.net,entity-framework,C#,Asp.net,Entity Framework,我想构造一个LINQ查询,用于根据like条件选择行的EF上下文。 据我所知,您可以使用.Contains()获得此行为。但是,我想包含的LIKE包含一个数字范围: LIKE 'LN[0-9]%' 例如 我如何在一个简单的查询中复制这种行为 谢谢,目前您不能直接在LINQ中使用like。U可以使用StartsWith,包含的或EndsWith被翻译成LIKE。其他解决方案是使用“Where”覆盖“string”,如下所示: 其中(“类似于'LN[0-9]]”) 尝试使用类似的方式启动: var
.Contains()
获得此行为。但是,我想包含的LIKE包含一个数字范围:
LIKE 'LN[0-9]%'
例如
我如何在一个简单的查询中复制这种行为
谢谢,目前您不能直接在LINQ中使用like。U可以使用
StartsWith
,包含的或EndsWith
被翻译成LIKE。其他解决方案是使用“Where”覆盖“string”,如下所示:
其中(“类似于'LN[0-9]]”)
尝试使用类似的方式启动:
var query = Cities.Where(city => city.Code.StartsWith("LN[0-9]"));
这是一个正则表达式问题([0-9]是正则表达式术语)。我建议你试试这样:
Regex myRegex = new Regex("LN[0-9]");
var matches = Cities.Where(c => myRegex.IsMatch(c.Field));
这是一个粗略的示例,但应该让您开始。LINQ to Entities将添加escape并将[0-9]作为stringIt的一部分。值得注意的是,它不直接支持这一点。见@Piotr的答案。另外,请注意,如果OP一直在使用,那么他可以使用SqlMethods
。