2012-04-02 15 views
7

मैं चाहता हूं कि मेरी सूचीदृश्य का डेटाकॉन्टेक्स्ट एक अवलोकन संग्रह में बाध्य हो। अभी मेरे पास है:IQueryable <a> पर्यवेक्षण योग्यता <a> जहां एक = अज्ञात प्रकार

   // CurrentEmploye = some employee 
       Entities.DatabaseModel m = new Entities.DatabaseModel(); 
       var q = from t in m.TimeSheet        
         join emp in m.Employees on t.idEmployee equals emp.id 
         where emp.id == CurrentEmploye.id 
         select new 
         { 
          firstName = emp.firstName, 
          lastName = emp.lastName, 
          position = emp.position, 
          clockInDate = t.clockInDate, 
          clockOutDate = t.clockOutDate, 
         }; 

         listView1.DataContext = q; 

वह कोड सही ढंग से सूचीदृश्य को पॉप्युलेट करता है। जब भी मैं एक सूचीदृश्य आइटम अद्यतन करता हूं तो अब मैं सूचीदृश्य को अपडेट करना चाहता हूं।

मैं वैरिएबल q वैरिएबल 0xपसंद करूंगा, अवलोकन करने योग्य चयन को पहले श्रेणी, अंतिम नाम, स्थिति इत्यादि रखने वाले कस्टम क्लास को बनाए बिना ... मैं यह कैसे कर सकता हूं?

+1

मुझे लगता है कि आप की कोशिश की 'listView1.DataContext = नए ObservableCollection (क्यू) 'और यह काम नहीं किया, है ना? .. – dasblinkenlight

+0

नया पर्यवेक्षण चयन <"need type"> (क्यू); एक प्रकार की आवश्यकता है और मुझे इस प्रकार का पता नहीं है। शायद मैं इसे प्रतिबिंब के साथ प्राप्त करूंगा। धन्यवाद कि एक सहायक टिप्पणी थी। –

+0

आह, आप सही हैं, मैं पूरी तरह से भूल गया कि विधियों के साथ क्या काम करता है हमेशा रचनाकारों के साथ काम नहीं करता है। आइए जॉन स्कीट के लिए प्रतीक्षा करें :) – dasblinkenlight

उत्तर

14

आप को धोखा देने और आप के लिए यह करने के लिए के बाद से तरीकों सामान्य प्रकार स्वचालित रूप से अनुमान लगा सकते हैं एक विधि बना सकते हैं:

public ObservableCollection<T> ToObservableCollection<T>(IEnumerable<T> enumeration) 
{ 
    return new ObservableCollection<T>(enumeration); 
} 

ओह, और अगर यह आपकी मदद करता है एक विस्तार पद्धति के रूप में यह बना सकते हैं जिससे इसका उपयोग करना आसान है ... आप तक।

+0

+1! – dasblinkenlight

+0

क्या जेनिक्स का उपयोग किए बिना ऐसा करने का कोई तरीका है? मेरा मतलब है, इनलाइन कोड के साथ और वास्तविक प्रकार के बिना। ObservableCollection ? – v1n1akabozo

1

मेरा उत्तर के अलावा, आदेश एक विस्तार आप रखना चाहिए के रूप में उपयोग करने के लिए "इस" विधि तर्क से पहले:

public ObservableCollection<T> ToObservableCollection<T>(this IEnumerable enumeration){ return new ObservableCollection<T>(enumeration) } 
संबंधित मुद्दे