2014-10-09 3 views
3

검색어의 단어에 대해 IQueryable 목록을 검색해야합니다.단어 중 임의의 단어를 Linq로 검색합니다.

현재이 작업이 있지만 정확히 일치하는 것입니다.

"검색 용어" "다른 검색어"

내가 가장 좋은 방법을 확실하지 않다 : 누군가가해야 결과 "용어를 검색"을 검색하면 내가 필요로 무엇

list.Where(x => x.MyList.Any(y => y.ToSearch.ToLower().Contains(searchTerm.ToLower()))); 

입니다 linq에서 이것에 대해 누구든지 제발 도와 줄래?

+2

정확하게 동일하지 않더라도 문자열을 비교할 수있는 알고리즘이 있습니다. [다음은 예제입니다.] –

답변

6
//split the search terms by space 
var searchWords = searchTerm.ToLower().Split(" ".ToCharArray(), 
          StringSplitOptions.RemoveEmptyEntries); 

//check if any of those search terms is present 
list.Where(x => x.MyList.Any(y => 
     searchWords.All(sw=>y.ToSearch.ToLower().Contains(sw)))); 
+1

split에서 ToLower()를 약간 더 성능이 좋도록 만들 것입니다 :'var searchWords = searchTerm.ToLower(). Split ('', StringSplitOptions.RemoveEmptyEntries) ' – Rhumborl

+0

@Rhumborl, 좋은 생각, 감사합니다. –

+0

@ AD.Net 빠른 응답을 주셔서 감사합니다. 그것은 내가 필요한 것입니다. searchWords의 모든 단어와 일치해야한다면 어떻게해야합니까? – Burt

관련 문제