2011-02-09 2 views

답변

7

편집이 코드를 변환하십시오 LINQ하려면 : "대답은"당신이 게시 한 감안할 때, 아마도 당신이 대신 Contains를 원하는 것 같습니다. 이 질문에 실제로 무엇을하려고하는지에 대해 실제로 설명하는 것이 실제로 도움이되는 곳입니다. 내 question-writing guide을 참조하십시오.

그래서 당신은 은 할 수 있습니다 : 내가 좋아하는

var query = list.Where(item => item.Name.Contains(textBox1.Text)); 

가 보이는 : 당신이 정말 당신이 쓴 쿼리를 의미하는 경우

var query = from item in db.Tell 
      where item.Name.StartsWith("N") && item.Name.EndsWith(textBox1.Text) 
      select item; 

있다고. 당신이 그것을 유니 코드 문자열을 만들기 위해에서 "N"를 포함하는 경우, 당신은 단지 원하는 :

var query = from item in db.Tell 
      where item.Name.EndsWith(textBox1.Text) 
      select item; 

또 다른 대안을 - 당신은 SQL에 LINQ를 사용하는 경우 - 사용하는 것입니다 SqlMethods.Like :

var query = from item in db.Tell 
      where SqlMethods.Like(item.Name, "N%" + textBox1.Text) 
      select item; 

쿼리 표현식 대신 "유창한 표기법"또는 "점 표기법"을 사용할 수도 있습니다. 예를 들어, 마지막 하나는 동일합니다 :

var query = db.Tell.Where(item => SqlMethods.Like(item.Name, 
                "N%" + textBox1.Text)); 

과 첫 번째에 해당합니다 :

var query = db.Tell.Where(item => item.Name.EndsWith(textBox1.Text)); 

또는 당신은 단지 List<T>를 사용하는 경우, 뭔가 같은 :

var query = list.Where(item => item.Name.EndsWith(textBox1.Text)); 

게시 한 코드를 사용중인 경우 사용자가 입력 한 데이터를 직접 사용하여 SQL을 작성하지 않으므로 SQL 주입 취약점이 있음에 유의하십시오. 대신 매개 변수화 된 쿼리를 사용하는 LINQ와 같은 매개 변수화 된 쿼리를 사용하십시오.

+0

서버에서 EndsWith가 LIKE로 바뀌 었습니까? (또는 http://msdn.microsoft.com/en-us/library/bb355235.aspx를 사용해야합니까?) – driis

+0

@driis : 예상대로입니다. 좋아,로 변환. –

+1

'item.Name.StartsWith ("N") 및 item.Name.EndsWith (textBox1.Text)'아닌가요? – goenning