컬렉션에 일치하는 항목이 하나 뿐이라는 것을 알고 있다면 Linq에게이를 알릴 방법이 있습니까? 그래서 발견하면 검색을 중단합니다.항목을 찾은 후 linq 쿼리를 중단 하시겠습니까?
두 항목 모두 하나의 항목을 반환하기 전에 전체 컬렉션을 검색한다고 가정합니다.
var fred = _people.Where((p) => p.Name == "Fred").First();
var bill = _people.Where((p) => p.Name == "Bill").Take(1);
편집 : 사람들은 FirstOrDefault
, 또는 SingleOrDefault
에 집착 보인다. 이것들은 제 질문과는 관련이 없습니다. 콜렉션이 비어있는 경우 단순히 기본값을 제공합니다. 앞서 말한 것처럼 내 컬렉션에는 일치하는 항목이 하나 있습니다.
AakashM의 의견은 저에게 가장 큰 관심사입니다. 나는 내 가정이 틀렸다는 것을 알았지 만 나는 왜 그런지 관심이있다. 예를 들어, linq 개체에 내 예제 코드에서 Where() 함수를 실행하는 경우 반환 값에 대한 연산이 추가로 있다는 것을 어떻게 알 수 있습니까?
기본 제공 업체에 따라 다르지만, 귀하의 가정은 자주 부정확 할 것입니다. – AakashM
FirstOrDefault를 사용합니다. 일단 항목을 찾으면 중지하고 컬렉션의 나머지 항목을 검색하지 않습니다. 그렇지 않으면 항목이없는 경우 null을 반환합니다. 둘 이상의 항목이있는 경우 예외를 throw하려면 SingleOrDefault를 사용하지만 전체 선택을 검색합니다. – ThePower
@AakashM : 내 질문을 조금 편집했습니다. 당신은 전혀 논평 할 수 있습니까? – GazTheDestroyer