2011-11-03 6 views
2

문자열 모음이 있다고 가정합니다. 특정 매개 변수 값을 포함하지 않는 요소를 모두 선택하려면 어떻게합니까?linq - 뭔가가 아닌 요소 선택

List<string> TheList = ..... 

var TheCleanList = (from s in TheList 
        where s != parameter 
        select s).ToList(); 

나는 s! = 매개 변수에 대해 생각하고 있었지만 더 깨끗한 방법이 있는지 궁금합니다.

감사합니다.

+0

괜찮습니까 ... 뭐가 잘못 되었나요? –

답변

6

당신은 당신이에 대한 Linq에 필요하지 않는 새로운 목록이 필요하지 않은 경우이 새로운 목록을 만들 필요 방지 :

당신이 Parameter에 동일한 모든 문자열을 제거하려면 :

TheList.RemoveAll(s => s == Parameter); 

당신이 (당신의 질문에서 명확하지) Parameter를 포함하는 모든 문자열을 제거하려면를 :

TheList.RemoveAll(s => s.Contains(Parameter)); 
+0

좋습니다, 멋지다; 나는 Contains 버전이 필요했다. 다시 한번 감사드립니다. – frenchie

3

당신은 의미 :

List<string> TheList = ..... 

var TheCleanList = (from s in TheList 
        where !s.Contains(parameter) 
        select s).ToList(); 
2

당신은 String.Contains

var TheCleanList = (from s in TheList 
        where !s.Contains(parameter) 
        select s).ToList(); 

또는

var TheCleanList = TheList.Where(s => !s.Contains(parameter)).ToList(); 

String.Contains를 사용하는 경우를 구분합니다. 당신이 경우-insensitve을 원하는 경우 : - Remove()를 사용 -

string lower = parameter.ToLower(); 
... 
where s.ToLower().Contains(lower) 
+1

하나의 제안 만 가능하며! =, == 등의 string.contains를 언급 할 수 있습니다. 대소 문자를 구분하여 평가합니다. 필자는 Linq가 때때로 TSQL과 대소 문자를 구분하지 않는다는 사실을 잊어 버렸습니다. – Nickz