2012-02-16 3 views
0

은 이제 나는 Dictionary<String, Guid>변환 사전

ArrayList에 해당 변환하는 가장 빠른 방법은 무엇입니까 있다고 가정 해 봅시다 위해 ArrayList?

ArrayList result = new ArrayList(); 

foreach (KeyValuePair<String, Guid> kvp in myDict) { 
    result.Add(new { Value = Base64Converter.ConvertBase64(kvp.Value), Display= kvp.Key}); 
} 

을하지만 더 나은 방법이있을 가지고있다 :

나는 다음을 수행 할 수 있습니다.

답변

2

LINQ는 컴팩트하고 표정 변화 컬렉션에 대한 당신의 친구입니다 :

객체 내 경험 LINQ에서
ArrayList result = 
    new ArrayList((from kvp in myDict 
       select 
       new { Value=Base64Converter.ConvertBase64(kvp.Key), 
         Display=kvp.Value }).ToArray()); 

잘 성능을 위해 최적화되어 있지만, 다른 옵션에 비해 성능 저하가 종종있다. 참조

http://you.arenot.me/2010/07/30/linq-to-objects-vs-list/

당신은 우아함 절대적 성능에 관심이 있다면

http://peterkellner.net/2009/06/03/linq-in-memory-performance/

http://blogs.msdn.com/b/csharpfaq/archive/2009/01/26/does-the-linq-to-objects-provider-have-built-in-performance-optimization.aspx

를 참조하십시오, 당신의 방법은 빠른 것으로 판명 수 있습니다. 그러나 사전이 꽤 큰 경우가 아니면 차이를 측정하기가 어려울 수 있습니다. 의심스러운 경우 벤치 마크

0

LINQ를 사용하고, (ArrayList에 반대) 목록은 OK입니다 가정 :

myDict 
    .Select(kvp => new { Value = Base64Converter.ConvertBase64(kvp.Value), Display = kvp.Key }) 
    .ToList(); 

또는 고속으로

하면 런타임 성능을 의미합니까?

0

또는, 그것은 정확히 ArrayList를해야하지 않는 경우

var d = new Dictionary<string, Guid>(); 
    List<string> l = d.Select(x => x.Key).ToList();