이 객체에 LINQ입니다 가정하면, 그것은 (그리고 실제로 Element
호출) searchWords
의 각 요소에 대해 절대적으로 할 것입니다. 암묵적으로 다른 것을하기 위해 국가를 저장할 수있는 곳이 없습니다. 당신은하지만 쉽게 자신이를 최적화 할 수 있습니다 대소 문자를 구분 비교를 수행하는 다른 방법이 있다는 것을
가
var products = xElem.Descendants(fileName)
.Where(d => {
string lowerD = d.Element(productName).Value.ToLower();
return searchWords.All(t => lowerD.Contains(t));
})
... // rest of query
참고 :
var products = from d in xElem.Descendants(fileName)
let lowerD = d.Element(productName).Value.ToLower()
where searchWords.All(t => lowerD.Contains(t))
또는 비 쿼리 식에 당신이 문 람다를 사용할 수
더 강력합니다. 예 :
var products = from d in xElem.Descendants(fileName)
let v = d.Element(productName).Value
where searchWords.All(t =>
v.IndexOf(t, StringComparison.CurrentCultureIgnoreCase) != -1)
첫 번째 예를 들면 다음과 같습니다. 모든 선택에 대해 ToLower()를 평가하지 않습니까? –
@NaveedButt : 요소/검색 단어 조합 당 한 번이 아니라 각 요소에 대해 한 번씩 실행됩니다. 각 요소마다 다른 내용을 가질 수 있으므로 각 요소에 대해 한 번 수행해야합니다. –
Jon, 너 놀랍다! 도착한 다음 주에 책을 읽으겠습니다! – RJIGO