요구사항: 다른 사람들의 기술 블로그를 읽고, 일부 컬렉션에서 ToLookup 메서드를 호출하는 것을 확인한 후 이 확장 메서드의 사용법을 배우기 위해 관련 자료를 쿼리하세요. ToLookup 메서드는 ToLookup<TSource, TKey>라는 값을 반환하며, 이는 키를 값 집합에 매핑하는 1대다 사전입니다.
GroupBy vs. ToLookup
GroupBy와 ToLookup은 모두 컬렉션을 그룹화하는 LINQ 확장 메서드이며, 두 사람의 주요 차이점은 반환 유형과 사용법입니다.
GroupBy 메서드는 IEnumerable<IGrouping<TKey, TElement>> 객체를 반환하며, 여기서 TKey는 그룹화 키를 나타내는 타입이고 TElement는 요소 타입을 나타냅니다. 이 방법은 지정된 키 선택기에 따라 컬렉션을 그룹화하고, IGrouping<TKey, TElement> 객체들의 시퀀스로 그룹 결과를 반환합니다. IGrouping<TKey, TElement> 객체들은 동일한 키를 가진 요소들의 집합을 나타냅니다. foreach 루프나 LINQ 쿼리를 사용해 그룹화된 결과를 반복할 수 있습니다. GroupBy 메서드는 실제 그룹화 연산을 반복 분석할 때만 실행되는 지연 실행 연산입니다.
ToLookup 메서드는 ILookup<TKey, TElement> 객체를 반환하며, 여기서 TKey는 그룹화 키를 나타내는 타입이고 TElement는 요소 타입을 나타냅니다. 이 메서드는 지정된 키 셀렉터에 따라 컬렉션을 그룹화하고, 그룹 결과를 ILookup<TKey, TElement> 객체로 반환합니다. ILookup<TKey, TElement> 객체들은 동일한 키를 가진 요소들의 집합을 나타냅니다. 인덱서나 포리치 루프를 사용해 그룹화된 결과에 접근할 수 있습니다. GroupBy와 달리, ToLookup은 즉시 그룹화 작업을 실행하고 호출 시 결과를 반환하는 즉각 액션입니다.
예시: 한 학생이 수업에 있고, 한 수업이 여러 학생에 해당합니다. 학생 컬렉션에는 수업 정보가 포함되어 있으며, 각 수업(또는 지정된 수업)의 학생들은 수업 그룹에 따라 출력됩니다.
코드는 다음과 같습니다:
아래에 나와 있습니다:
참조:하이퍼링크 로그인이 보입니다.
|