2011-09-22 3 views
0

나는 하나의 복합 사전과 하나 개의 목록이C#의 LINQ지도 복합 사전

Dictionary<Point, List<int>> GroupedIndex 
List<double> TobeMatched 

가 지금은 TobeMatched 인덱스와 GroupedIndex의 INT 값에서 인덱스에 대응하여 매핑 같은 키 만에 값을 가진 새 사전을 만들려면이

Example: 

GroupedIndex [0] -> 키 [X = 1, Y = 1]; 값 [0] -> 5 [1] - TobeMatched 10

> [0] 0.23 [5] 0.345 [10] 1.23

Result expected: 
New dictionary: [0] -> Key[X=1;Y=1]; Values [0] -> 0.345, [1] -> 1.23 

이 가능 LINQ하는 결과를 얻을 효율적으로 for 루프는 매우 비효율적입니다.

답변

0
GroupedIndex.ToDictionary(x => x.Key, 
           x => x.Value.Select(y=>TobeMatched[y]).ToList()); 

이것이 LINQ에서 수행하는 방법입니다. 하지만 정기적 인 루프에 비해 더 빠를 것이라고는 생각하지 않습니다.

+0

우수 답변. 이런 종류의 LINQ가 얼마나 좋은지 보여줍니다. – Enigmativity

+0

@Enigmativity 네, LINQ to objects는 콜렉션 필터링, 정렬 및 투영 (변환)을위한 매우 succint 표현식을 허용합니다. 그리고 F #의'List' 나 Seq와 같은 모듈을 사용해 본 경험이 없으면 그것 없이는 살 수 없습니다. 하지만 성능면에서는 때로는 최상의 답변이 아니며 문제는 '효율성'에 관한 것입니다. – Dmitry

+0

코드의 효율성이 코드의 효율성보다 더 중요하다고 생각합니다. 계산 시간을 수 밀리 초 절약하는 것보다 일찍 집에 갈 때 최적화하십시오. – Enigmativity