명시 적 범위 변수 유형 을 지정 하면 컴파일러는에 대한 호출을 삽입합니다 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 작업을 가능하게한다 -.