2012-11-07 3 views
-1

나는이 문제를 해결하기 위해 오랜 시간을 보냈지 만 어느 곳으로도 갈 수 없어 누군가가 나를 도울 수 있도록 도와줍니다. 텍스트 상자에 Like % 연산자를 사용하려는 검색 양식이 있습니다. 간단해야하지만 Linq2Entities 이후로 문제를 해결할 수있는 몇 가지 문제가있었습니다. 나는 m.Content에서 "%%"(텍스트 상자) 또는 그것이 그러나이 만들어졌다를 사용할 수 있도록하고 싶습니다"Like"Expression, LINQ to Entitie

var data = mg.DatabaseTable.Where(m => m.UserName.StartsWith(TextBoxUserID.Text) && 
                 **m.Content.Like(%TextBoxBarcode.Text&)** && 
                 m.Action.StartsWith(DropDownListStatus.Text) && 
                 m.Site.Contains(TextBoxSite.Text)); 

: 여기

내 코드의 조각이다.

저는 StartsWith, EndWith 및 Contains의 사용을 알고 있습니다.

m.Content.StartsWith(TextBoxBarcode.Text); 

like 'search%' 

또는

을 위해 : 나는

답변

1

사용할 수

감사합니다 "%처럼"사용하여 가능한 검색을 조회하는 방법을 선택할 수 있도록하고 싶습니다 :

m.Content.EndsWith(TextBoxBarcode.Text); 

대한

like '%search' 

나 :

m.Content.Contains(TextBoxBarcode.Text); 

like '%search%' 

는 사용자가 검색 유형을 선택할 수 있도록하려면 다음 다음 스위치를 가지고해야합니다에 대한 세 가지 다른 쿼리. 어느 쿼리를 복제하거나 한 번 기본 쿼리를 수행 한 후 스위치에 따라 그 결과 필터링 :

var data = mg.DatabaseTable.Where(m => m.UserName.StartsWith(TextBoxUserID.Text) && 
             m.Action.StartsWith(DropDownListStatus.Text) && 
             m.Site.Contains(TextBoxSite.Text)); 

if (searchMode == StartsWith) 
{ 
    return data.Where(m => m.Content.StartsWith(TextBoxBarcode.Text); 
} 
else if (searchMode == EndsWith) 
{ 
    return data.Where(m => m.Content.EndsWith(TextBoxBarcode.Text); 
} 
else 
{ 
    return data.Where(m => m.Content.Contains(TextBoxBarcode.Text); 
} 
+0

+1을,하지만 난 –

+0

@lazyberezovsky를 검색 문자열에 대한 변수를 생성했던 - 그 이유는 무엇입니까? 이것들은 하나의 코드에서 3 가지 모두를 반드시 사용해야하는 것은 아닙니다. – ChrisF

+0

"Contains"를 피하기 위해 내 대답을 편집했습니다. 왜냐하면 나는 다음과 같은 검색을 사용할 수 있기를 원하기 때문이다 : "% Myname % something %" – MishMish