2011-03-08 5 views
7

Tengo una aplicación VS2008 C# .NET 3.5 donde me gustaría crear una tabla hash de objetos con una lista IEnumerable de esos objetos.llenando un diccionario <> con una fuente IEnumerable <>

Básicamente, se ve así:

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; 
    } 
} 

Esto funciona, pero me pregunto si no hay una mejor manera de copiar de una fuente a otra IEnumerable. ¿Alguna sugerencia?

Gracias, PaulH

+0

Su método 'create' parece sin sentido; crea un 'MyCollection ' vacío llamado 'c', hace cosas a los elementos de su parámetro' source', luego devuelve el 'c' todavía vacío. Y te doy el beneficio de la duda suponiendo que 'IMyData' tiene un método 'Agregar'. – Domenic

+0

@Domenic - Tienes razón. Lo copié tan mal. Lo he corregido Sin embargo, tu respuesta fue lo que estaba buscando. Gracias. – PaulH

Respuesta

18
return source.ToDictionary(item => item.ID, item => item.Text); 
Cuestiones relacionadas