2011-03-08 14 views
7

मेरे पास एक वीएस -2008 सी # .NET 3.5 एप्लिकेशन है जहां मैं उन ऑब्जेक्ट्स की एक आईनेमरेबल सूची दिए गए ऑब्जेक्ट्स का हैशटेबल बनाना चाहता हूं।एक शब्दकोश भरना <> एक आईनेमरेबल <> स्रोत

असल में, यह इस तरह दिखता है:

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' विधि अतर्कसंगत लगता है; यह एक खाली 'MyCollection ' नामित 'c' बनाता है, इसके पैरामीटर 'स्रोत' के तत्वों के लिए सामान करता है, फिर भी खाली-खाली' c' देता है। और मैं आपको संदेह का लाभ दे रहा हूं कि 'IMyData' में' जोड़ें 'विधि है। – Domenic

+0

@Domenic - आप सही हैं। मैंने उस बुरी तरह नकल की। मैंने इसे सही कर दिया है। आपका जवाब वह था जो मैं खोज रहा था, यद्यपि। धन्यवाद। – PaulH

उत्तर

18
return source.ToDictionary(item => item.ID, item => item.Text); 
संबंधित मुद्दे