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과 비슷하지만 열거는 메모리에 남아 있습니다.