답변:
사전은 1 : 1 맵 (각 키가 단일 값에 매핑 됨)이며 사전은 사실 후에 변경 가능 (편집 가능)됩니다.
조회는 일대 다 맵 (다중 맵, 각 키가 해당 키가 IEnumerable<>
있는 값 중 하나 에 매핑 됨 )이며 ILookup<,>
인터페이스에 돌연변이가 없습니다 .
참고로, 존재하지 않는 키에 대한 조회 (인덱서를 통해)를 쿼리 할 수 있으며 빈 시퀀스가 표시됩니다. 사전도 똑같이하면 예외가 발생합니다.
그렇다면 각 키를 공유하는 레코드는 몇 개입니까?
지나치게 단순화 된 방법은 a Lookup<TKey,TValue>
가 a 와 거의 비슷 하다는 것 입니다 .Dictionary<TKey,IEnumerable<TValue>>
Dictionary<TKey, IEnumerable<TValue>>
목록의 사전으로 설명 될 수 있습니다. 이렇게 ToLookup()
말하는 것과 같습니다 : 목록 사전을주세요. 어떤 이유에서인지 그 설명을 들으면 머릿속에 똑바로 들어가는 데 도움이되었습니다.
ToDictionary는 <TKey, TValue>이고 ToLookup <TKey, T1, T2, T3, ...>는 IGrouping과 비슷하지만 열거는 메모리에 남아 있습니다.
T1, T2, T3, ...
. ToLookup과 ToDictionary (메서드 자체)는 거의 동일한 API를 가지고 있습니다