2014-01-07 2 views
0

Like 연산자를 사용하여 LINQ to SQL 쿼리를 작성하려고하지만 와일드 카드 연산자를 사용하지 않으려합니다.LINQ Like Clause - 와일드 카드 연산자 사용하지 않음

나는 다음 알고 StartsWith이에 equivlent 될 것 같은 '% B 형 %' : 유사한 'ㄱ %'를하고 EndsWith 반대 할 것이다

이에 equivelent됩니다 포함합니다.

같음, "이 방법은 서수 (대/소문자 구분 및 문화 구분 불명) 비교를 수행합니다."

내가 지금 뭐하는 거지 방법은 다음과 같이이다 :

var loc = (from l in data.Locations.OrderBy(l => l.LocationName) 
    join s in data.LocationSecurities.Where(s=> s.UserName.ToLower().Equals(userName.ToLower())) on l.LocationID equals s.LocationId 
    select new 
    { 
     LocationId = l.LocationID, 
     Name = l.LocationName 
    } 
    ).Distinct().ToList(); 

을하지만 내가 원하는 것은 단순히처럼의 equivelent하지만 whitout 와일드 카드를 사용하는 것입니다 때문에이 주변 업무 단지 인 SQL Server Profiler에서 눈에 띄지 않게 나타납니다.

알려 주시기 바랍니다.

미리 감사드립니다.

답변

0

당신은 사용할 수 있습니다

SqlMethods.Like 

처럼을 :

.Where(s => SqlMethods.Like(s.UserName, userName)) 
+0

SqlMethods.Like 메서드는 컴파일러에서 인식하지 못합니다. 비록 이것이 Linq to SQL로되어 있다고하더라도. @Dave Bish –

+0

@t_plusplus - 뭐라고 요? System.Data.Linq.SqlClient.SqlMethods에 대한 참조 추가 –

0

Equals이 Linq를 사용하는 경우에는 적용되지 않는 "서수 (대소 문자 구분과 문화를 구분) 비교" 수행하는 SQL 또는 Entity 프레임 워크로 변환 할 수 있습니다.
데이터베이스 collation (또는 열 집합이 설정된 경우)은 "=" (같음) 처리 방법을 결정합니다.