2011-03-08 62 views
7

Ben bu nesnelerin bir IEnumerable listesi verilen nesnelerin bir hashtable oluşturmak istediğiniz bir VS2008 C# .NET 3.5 uygulaması var.Sözlük <> bir IEnumerable <> kaynağı ile doldurma</ a0><a1></ a1>

Temelde, şuna benzer:

public class MyCollection<T> : IEnumerable<T> 
    where T: IMyData, new() 
{ 
    private IDictionary<int, string> collection_ = new Dictionary<int, string>(); 

    // ... 

    public void Add(T item) 
    { 
     collection_.Add(item.ID, item.Text); 
    } 

    public static MyCollection<T> Create(IEnumerable<T> source) 
    { 
     MyCollection<T> c = new MyCollection<T>(); 
     foreach(T item in source) 
     { 
      c.Add(item); 
     } 
     return c; 
    } 
} 

Bu çalışır, ancak başka bir IEnumerable kaynaktan kopyalama daha iyi bir yolu yoktur merak ediyorum. Baska öneri?

sayesinde PaulH

+0

Kişisel 'Create' yöntemi saçma görünüyor; boş bir 'MyCollection ' '' isimli '' '' '' '' '' '' '' '' 'parametresinin elemanlarına bir şeyler yapar, sonra hala boş 'c' döndürür. Ve size IMyData'nın bir 'Add' yöntemine sahip olduğunu farz edelim. – Domenic

+0

@Domenic - Haklısınız. Bunu çok yanlış kopyaladım. Onu düzelttim. Cevabın aradığım şey buydu. Teşekkür ederim. – PaulH

cevap

18
return source.ToDictionary(item => item.ID, item => item.Text); 
İlgili konular