2011-03-08 50 views
7

我有一个VS2008 C#.NET 3.5应用程序,我想创建一个给定这些对象的IEnumerable列表的对象的哈希表。用IEnumerable <>来源填充字典<>来源

基本上,它看起来像这样:

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

这工作,但我不知道如果没有从一个IEnumerable的源复制到另一个更好的办法。有什么建议么?

感谢, PaulH

+0

你'Create'方法似乎是荒谬的;它会创建一个名为'c'的空'MyCollection ',对其参数'source'的元素进行操作,然后返回仍然为空的'c'。假设'IMyData'有一个'Add'方法,我会给你带来怀疑的好处。 – Domenic 2011-03-08 17:41:48

+0

@Domenic - 你是对的。我严重拷贝了它。我纠正了它。虽然你的答案是我正在寻找的。谢谢。 – PaulH 2011-03-08 19:07:37

回答

18
return source.ToDictionary(item => item.ID, item => item.Text); 
相关问题