두 문자열 배열에서 SQL MINUS의 equivelent를 수행하려고합니다.람다 식에서 MINUS 두 문자열 배열
string returnValue = "";
foreach (string eachWord in allWords)
{
foreach (string ignoreWord in ignoreWords)
{
if (eachWord != ignoreWord)
{
returnValue += eachWord;
}
}
}
나는대로이를 다시 작성하려면 :
returnValue = allWords.Minus(ignoreWords);
또는 동등 간결 뭔가 저는 여기에 복제하기 위해 노력하고있어 코드입니다. 나는 장면 뒤에서 같은 코드로 끝날 것임을 알지만, 나는 단지 대담 해지고있다! 당신이 IEnumerable<string>
에만 문자열이 아닌를 갖고 싶어
뒤에 e 장면은 ** 같은 코드를 얻지 못할 것입니다. 귀하의 코드는 O (M * N)입니다. 여기서 M은'allWords'의 크기이고 N은'ignoreWords'의 크기입니다. Linq의'Except'에서 사용 된 알고리즘이 더 적절히 구현되면 O (N + M)을 얻을 수 있습니다. 핵심은 O (1) 검색을 사용하는 HashSet에 하나의 컬렉션을 저장하는 것입니다. 중첩 된 루프가 있으면 하나의 루프 (설정 항목 추가)와 다른 단일 루프 (검색 수행)가 있습니다. – Servy