명시 적 범위 변수 유형 을 지정 하면 컴파일러는에 대한 호출을 삽입합니다 Cast<T>. 그래서 이거:
bool result = (from Match m in matches
where m.Groups["name"].Value.Length > 128
select m).Any();
다음과 정확히 동일합니다.
bool result = matches.Cast<Match>()
.Where(m => m.Groups["name"].Value.Length > 128)
.Any();
다음과 같이 작성할 수도 있습니다.
bool result = matches.Cast<Match>()
.Any(m => m.Groups["name"].Value.Length > 128);
이 경우에 Cast호출하기 때문에 필요한 MatchCollection경우에만 구현 ICollection하고 IEnumerable,하지 IEnumerable<T>. 거의 모든 개체 확장 방법에 LINQ를 대상으로 IEnumerable<T>주목할만한의 예외를 제외 Cast하고 OfType「약 "입력 모음 (예 : 변환하는 데 사용되는 둘, MatchCollection일반에) IEnumerable<T>다음 더 LINQ 작업을 가능하게한다 -.