c# - Distinct with custom comparer gives vauge error -


मेरे पास निम्न कोड है:

  IEqualityComparer & lt; WorkItem & gt; तुलनाकर्ता = नया लैम्ब्डा कॉम्पपरर & lt; वर्कइटम & gt; ((मद 1, आइटम 2) = & gt; आइटम 1। प्रकार == आइटम 2। टाइप); Var someVar = Pad.Distinct (तुलनात्मक);  

(यह विचार प्रत्येक प्रकार का 1 मिलता है)
और यह निम्न त्रुटि संदेश दे रहा है:

 विधि के लिए प्रकार तर्क 'System.Linq .नम्य। डिस्टिंक (सिस्टम। कोलेक्शंस। जेनरिक.आईईएनएमेरेएबल, सिस्टम। कोलेक्शन। जेनरिक। आईईक्वैलिटी कॉम्पॅटरर) 'उपयोग से अनुमानित नहीं किया जा सकता है। स्पष्ट रूप से टाइप तर्क निर्दिष्ट करने का प्रयास करें 490 

मैंने कुछ समान किया है और यह सिर्फ ठीक काम करता है:

  पैड = नया शब्दकोश & lt; वर्कइटम, कैनवास & gt; (नया लैम्ब्डा कॉम्पपरर & lt; वर्कइटम & gt; ((एक्स, वाई) = & Gt; x.Id == y.Id, x = & gt; x.Id));  

इसलिए मुझे नहीं लगता कि यह मेरी लैम्डा कॉम्पैयरर वर्ग है।

इसे ठीक करने के बारे में कोई भी विचार? (मुझे लगता है कि मैं सिर्फ एक forEach कर सकता है और विशिष्ट मैन्युअल रूप से प्राप्त कर सकता हूं।)

चूंकि एक शब्दकोष है , आपको IEqualityComparer & lt; KeyValuePair & lt; WorkItem, Canvas & gt; & gt; की आवश्यकता है।

तो, मूल रूप से, प्रकार के प्रकार जो तुलनात्मक आप विशिष्ट से गुजर रहे हैं वह अपर्याप्त है : (

इसलिए आप सही कोड के आधार पर दिए गए हैं, ऐसा लगता है कि लैम्ब्डा कॉम्पैपरर समस्या नहीं है। आपको बस अपने "तुलनात्मक" चर को अलग तरह से परिभाषित करने की आवश्यकता है। / P>


Comments

Popular posts from this blog

php - multilevel menu with multilevel array -

.net - C# List<T>.Find(x=>x.Rectangle.Contains(Point)) FAIL -

objective c - iPhone and it's wireless area -