[C#] LINQ ToDictionary와 ToLookup의 차이점은 무엇입니까?

LINQ ToDictionary와 ToLookup의 차이점은 무엇입니까? 그들은 같은 일을하는 것 같습니다.



답변

사전은 1 : 1 맵 (각 키가 단일 값에 매핑 됨)이며 사전은 사실 후에 변경 가능 (편집 가능)됩니다.

조회는 일대 다 맵 (다중 맵, 각 키가 해당 키가 IEnumerable<>있는 값 중 하나 에 매핑 됨 )이며 ILookup<,>인터페이스에 돌연변이가 없습니다 .

참고로, 존재하지 않는 키에 대한 조회 (인덱서를 통해)를 쿼리 할 수 ​​있으며 빈 시퀀스가 ​​표시됩니다. 사전도 똑같이하면 예외가 발생합니다.

그렇다면 각 키를 공유하는 레코드는 몇 개입니까?

지나치게 단순화 된 방법은 a Lookup<TKey,TValue>가 a 와 거의 비슷 하다는 것 입니다 .Dictionary<TKey,IEnumerable<TValue>>


답변

ToDictionary는 <TKey, TValue>이고 ToLookup <TKey, T1, T2, T3, …>는 IGrouping과 비슷하지만 열거는 메모리에 남아 있습니다.


답변