* 출처
: http://cafe.daum.net/aspdotnet (심재운님 자료)
카페의 질문을 보고 LINQ 에서 T-SQL 의 LIKE 함수처럼 구현하는 강좌가 없어서 적어볼까 합니다.
이미 시중에 나온 책에 대부분 포함되어 있어서 그리 새로운 TIP 은 아니지만, 그래도 처음 접하시는분들에게
도움이 되지 않을까 생각이 드네요.
이제 슬슬 시작해 보죠.
먼저 간단하게 LIKE 가 아닌 조건 만족을 위한 LINQ 구문은 어떤것인지 확인해 보죠.
SELECT CustomerID, CompanyName, ...
FROM dbo.Customers
WHERE City = [London]
이는 간단하게 아래와 같이 linq 구문으로 처리 할 수 있지요.
var query = from c in ctx.Customers
where c.City == "London"
select c;
그냥 == 조건 기호를 이용해서 처리를 할 수 있습니다.
구문은 많이 sql 쿼리 구문과 친숙하므로 어렵지 않을 겁니다.
보시면 조건 기호가 = 가 아닌 == 로 처리되어 있으니 이 부분만 조심하시면 됩니다.
이제 원하시는 like 구문으로 넘어가보죠.
SELECT CustomerID, CompanyName, ...
FROM dbo.Customers
WHERE City LIKE [Lo%]
많이 사용하는 구문이죠? ^^ 이를 linq 에서는 어떻게 이를 처리하는지 확인해 보겠습니다.
var query = from c in ctx.Customers
where c.City.StartsWith("Lo")
select c;
네.~~ StartsWith 함수를 이용해서 처리를 했습니다. 대신 위처럼 [값%] 이런식으로만 처리 가능하지요.
EndsWith 함수도 있어요. StartWith 함수 반대 경우처럼 [%값] 이렇게 처리되겠지요.
하지만 %값% 이렇게 많이들 검색하시잖아요.~~ 따라서 이 부분도 함수가 따로 있습니다.
var query = from c in ctx.Customers
where c.City.StartsWith("L") && c.City.Contains("n")
select c;
네~~ Contains 라는 함수가 이를 증명하죠. 위처럼 실행하면 아래와 같은 sql 구문으로 대체됩니다.
SELECT CustomerID, CompanyName, ...
FROM dbo.Customers
WHERE City LIKE [L%]
AND City LIKE [%n%]
위처럼 간단히 Contains 함수를 이용해서 처리할 수 있지만, System.Data.Linq.SqlClient 네임스페이스를 찾다보면 아래와 같은 함수를 발견하실 거에요. SqlMethods 라는 함수이지요.
SQL 구문과 더 흡사한 방법으로 처리하므로 더 좋답니다.
var query = from c in ctx.Customers
whereSqlMethods.Like(c.City, "L_n%")
select c;
당연히..
SELECT CustomerID, CompanyName, ...
FROM dbo.Customers
WHERE City LIKE [L_n%]
이렇게 구문 처리 됩니다.
===================================================================================================
'IT_Programming > LINQ' 카테고리의 다른 글
Removing Byte Order Mark (BOM) with LINQ (0) | 2010.07.25 |
---|---|
[C#3.0_Linq] Linq를 이용하여 XML 데이터 읽어 오기 (0) | 2009.06.26 |