2010-07-15 16 views
5

मेरे डब्ल्यूपीएफ एप्लिकेशन में मैं जितना संभव हो LINQ का उपयोग करना चाहता हूं (विशेष रूप से foreach से बचने के लिए)। लेकिन डब्ल्यूपीएफ ऑब्जर्जेबल कोलेक्शन के साथ बहुत कुछ काम करता है, और मैं इस तरह के संग्रह के साथ LINQ का उपयोग नहीं कर सकता। मैं क्या कर सकता हूँ?WPF LINQ और ObservableCollection

उत्तर

8

आपको क्या लगता है कि आप LINQ का उपयोग ObservableCollection<T> के साथ नहीं कर सकते? यह Collection<T> लागू करता है इसलिए यह ठीक होना चाहिए।

उदाहरण के लिए:

using System; 
using System.Collections.ObjectModel; 
using System.Linq; 

class Test 
{ 
    static void Main() 
    { 
     var collection = new ObservableCollection<int>() 
     { 
      1, 2, 3, 6, 8, 2, 4, 5, 3 
     }; 

     var query = collection.Where(x => x % 2 == 0); 
     foreach (int x in query) 
     { 
      Console.WriteLine(x); 
     } 
    } 
} 
+0

धन्यवाद:

एक और SO-विषय, जहां मैं अपने समाधान नहीं मिला है। माफ़ कीजिये। मुझे याद है कि कुछ प्रश्नों के साथ समस्याएं थीं, लेकिन अब मैंने कोशिश की है और सबकुछ काम करता है। – lamarmora

+1

परिणामी क्वेरी एक आईनेमरेबल है। क्या एक ObservableCollection में वापस जाने का एक साफ तरीका है? – tofutim

+0

@tofutim: नहीं, जहां तक ​​मुझे पता है मुझे डर नहीं है। –

13

बस किसी और जो एक ObservableCollection को फ़िल्टर लेकिन वे नहीं कर सकते कि खोजने की कोशिश के साथ इस मुद्दे सामने आने के लिए।

जॉन बिल्कुल सही है कि ऐसा कोई कारण नहीं है कि आप ऐसा नहीं कर सकते हैं, लेकिन नौसिखिया या किसी ऐसे व्यक्ति के लिए जो कुछ समय के लिए WPF के साथ विकास कर रहा है, यह है कि आपको "" System.Linq का उपयोग कर; " नामस्थान। जैसे ही आप इसे करते हैं, आप अपनी ऑब्जेक्ट पर ".where" क्वेरी कर सकते हैं।

+0

यह सच है, और यह मेरे लिए काम किया। – dev1998

+0

अतिरिक्त उत्तर के लिए धन्यवाद! * वह * मेरा मुद्दा था :) – derekantrican

+1

परिणामी पर्यवेक्षण चयन अद्यतन नहीं होगा यदि अंतर्निहित स्रोत के परिणामस्वरूप क्वेरी परिणाम अपडेट अपडेट हो रहा है। – Tormod

0

ओपी ने विशेष रूप से LINQ "FOREach()" विधि के लिए पूछा, जिसका उपयोग ObservableCollection < टी> पर नहीं किया जा सकता है, क्योंकि यह केवल सूची < टी> के लिए लागू किया गया है। https://stackoverflow.com/a/200584/2408978