2015-01-25 2 views
-1

내가 특정 속성에 의해 개체의 목록 내에서 검색이 표현 해요 포함 개체의 목록 :쿼리 문자열

var result = myObject.Where(o => o.SearchString.Contains(searchValue)); 

그것은 하나의 값에 좋은 작품. searchValue는 사용자가 전달한 문자열입니다. 사용자는 공백으로 분리 된 하나의 단어 또는 여러 단어를 전달할 수 있습니다. 전달 된 단어가 포함 된 개체를 필터링하는 방법이 있습니까?

이전 결과에서 새 단어를 검색하면서 루프를 사용하여이 작업을 수행 할 수 있지만 매우 우아하지는 않습니다.

+0

@ peter-duniho 왜 이것이 중복 된 것으로 표시되었는지 알 수 없습니다. questin은 비슷하지만 복제 된 것은 아닙니다. 다른 질문은 문자열 목록의 요소에 대해 문자열을 검사하는 방법을 묻는 것입니다. 하지만 내가하고 싶은 일은 단일 LINQ 표현식이있는 속성을 기반으로하는 개체 컬렉션을 필터링하는 것입니다. 복제본으로 표시 한 솔루션을 사용하는 경우 루프를 사용해야합니다.이 경우 루프백을 사용하지 않는 것이 좋습니다. – RBasniak

답변

7
myObject.Where(o => words.Any(o.SearchString.Contains)) 
+1

FWIW,'words'가 이미 검색 단어 모음이 아니고 검색어가 공백으로 구분 된 긴 문자열 하나 인 경우'words.Split() '로 대체하십시오. –

+0

@ GrantWinney : 또는 정규 표현식을 작성하십시오. – SLaks

+0

고마워요 @SLaks, 그건 내가 염두에 두었던 것, 한 줄, 루프 없음. 미래에 이것을 보는 사람들을 위해, 당신이 바꿀 경우. 누구에게나. 모든 결과는 모든 성냥을 가진 항목만을 포함 할 것입니다. – RBasniak