2013-04-08 2 views
1

linq을 사용하여 모든 단어에 대한 검색 문자열을 어떻게 일치합니까? 즉 "사과 오렌지"는 "오렌지 사과"에서는 일치하지만 "사과 오렌지 프레드"에서는 일치하지 않아야합니다.모든 단어를 임의의 순서로 매칭

이 쿼리는 하나의 단어가 일치하는지 확인하기 위해 작동합니다. 일치하는 All() 단어가 작동하지 않습니다.

var match = "apple orange pear".Split() 
     .Intersect("orange pear fred".Split()) 
     .Any(); 

아이디어는이 스레드와 매우 유사합니다. 각 단어는 체크리스트에있는 경우 Word-wise super string search for given string

+0

"주황색 사과"가 "주황색"과 일치해야합니까? "사과 사과"는 어때? –

답변

1

확인 :

var words = "orange pear fred".Split(); 
var wordsToCheck = "apple orange".Split(); 
var match = words.All(w => wordsToCheck.Contains(w)); 

또는 두 시퀀스의 차를 생산하고 있습니다. 차이가있는 요소가 없으면 모든 단어가 검사 목록에 있습니다.

var match = !words.Except(wordsToCheck).Any(); 
+1

고마워요 .Except()를 사용하면이 시나리오에서 잘 작동합니다. – John

관련 문제