2009-12-18 1 views
1

넣어 간단하게 ... 일반 SQL에서 내가 이런 짓을 했을까 : Linq에에서Entity Framework에서 Regex를 이스케이프하지 않게하려면 어떻게해야합니까?

SELECT * FROM [Products] WHERE [Description] LIKE '%[0-9]%' 

을 나는이 않는 엔티티에 :하지만이 함께

Products.Where(p => p.Description.Contains("[0-9]")) 

을 끝낼 :

-- Region Parameters 
DECLARE @p0 NVarChar(8) SET @p0 = '%~[0-9]%' 
-- EndRegion 
SELECT ... 
FROM [Products] AS [t0] 
WHERE [t0].[Description] LIKE @p0 ESCAPE '~' 

SQL 정규식에서 어떤 시도를 피할 수 있습니까?

아이디어를 피하는 방법은 무엇입니까?

편집

나는 그것이 SQL 제공자의와 내가 엔티티 프레임 워크를 사용하고 있음을 추가해야합니다 나는 일이 된 IQueryable에서 수행 한 시도하고 모든을 가지고하지, 즉 (? 바로이 때문이다) .NET에 행 나는 정규식을 실행하기 전에

답변

2
당신은 쿼리에서와 같이 사용할 수 있습니다

: 당신은 LINQ의 전환을 보여주고있다 그러나 엔티티에 LINQ하지 SQL로

using System.Data.Linq.SqlClient; 
... 
var query = from p in Products 
      where SqlMethods.Like(p.Description, "%[0-9]%") 
      select p; 

그러나 LINQ이 유일한 작품 SQL 문을 사용하여 LINQ to SQL을 사용하고있는 것 같습니다. 그렇지 않다면 Where에 Regex 표현식을 사용하십시오. 내 머리 위로 떨어져


:

RegEx pattern = new RegEx("[0-9]"); 
... 
var query = from p in Products 
      where patter.IsMatch(p.Description) 
      select p; 

나는이 시험하지 않았다 그러나 그것은 작동합니다.

+0

Linq to Entities와 동일한 기능이 있습니까? – joshcomley