2011-06-13 57 views
2

我想构建一个LINQ查询,用于针对基于LIKE条件选择行的EF上下文。 据我所知,你可以使用.Contains()得到这个行为。但是,就像我想包括含有数范围:实体框架:如何表达一个LIKE语句,其中包含[0-9]

LIKE 'LN[0-9]%' 

例如...

我将如何去在一个简单的查询复制这种行为?

谢谢,

回答

2

目前,你不能直接在LINQ中使用。 U可以使用翻译成LIKE的StartsWith,ContainsEndsWith。其他的解决方案是使用 '去哪儿' 像这样的 '串' 此改变: 凡( “有点像 'LN [0-9]%'”)

Here is example

1

尝试StartsWith像这样:

var query = Cities.Where(city => city.Code.StartsWith("LN[0-9]")); 
+0

LINQ to Entities将添加转义并将[0-9]作为字符串的一部分处理 – 2011-06-13 13:32:26

0

这是一个正则表达式问题([0-9]是一个正则表达式命名法)。我建议你尝试这样的:

Regex myRegex = new Regex("LN[0-9]"); 

var matches = Cities.Where(c => myRegex.IsMatch(c.Field)); 

一个粗略的例子,但应该让你开始。

+1

值得注意的是[tag:entity-framework]不直接支持这一点。请参阅@ Piotr的答案。另外,请注意OP已经使用[tag:linq-to-sql],那么他可以使用'SqlMethods'。 – 2011-06-13 13:37:43