मेरे पास कुछ IEnumberable
आइटम संग्रह हैं। मैं संग्रह में एक विशिष्ट वस्तु खोजने के लिए .Single()
का उपयोग करता हूं।LINQ सिंगल() 0 या एकाधिक वस्तुओं के लिए अपवाद
मैं Single()
का उपयोग करना चुनता हूं क्योंकि केवल एक विशिष्ट आइटम होना चाहिए। हालांकि, अगर कोई अस्तित्व में नहीं है, तो मुझे इसे बनाने और संग्रह में जोड़ने की आवश्यकता है।
मेरी समस्या यह है कि Single()
एक ही त्रुटि को फेंकता है यदि कोई आइटम भविष्यवाणी से मेल नहीं खाता है या यदि कई आइटम हैं। मेरा विचार Single()
को कोशिश करने और अपवाद को पकड़ने के अंदर कॉल करना था, आइटम जोड़ें, और फिर जारी रखें। हालांकि, चूंकि दोनों परिदृश्य InvalidOperationException
फेंकते हैं, तो मैं कैसे बता सकता हूं कि इसकी कोई वस्तु या एकाधिक आइटम नहीं हैं?
मुझे पता है कि मैं First()
का उपयोग कर सकता हूं लेकिन यह इस विचार को लागू नहीं करता है कि केवल एक होना चाहिए (अतिरिक्त काम किए बिना)।
मैं भी Single()
कॉल करने से पहले Count()
इस्तेमाल कर सकते हैं, लेकिन यह सिर्फ Single()
ठीक है, यह तत्व प्रकार के लिए डिफ़ॉल्ट मान देता है। यह संदर्भ प्रकारों के लिए शून्य है, लेकिन स्पष्ट रूप से गैर-शून्य मूल्य प्रकारों के लिए नहीं ... –
... और यदि आप चेन नल चेक करना चाहते हैं, तो इस तरह के कुछ http://napoleonss.wordpress.com/2011/12/ का उपयोग कर सकते हैं 20/मेरी-चेक-अशक्त /। – napoleonss
@JonSkeet पर डिफ़ॉल्ट के लिए काम करता है आप सही हैं। मुझे लगता है कि वह एक संदर्भ प्रकार के बारे में बात कर रहा था हालांकि। –