c# - What is the collection version of SingleOrDefault for a Dictionary<T>? -


शीर्षक का प्रकार यह सब कहते हैं। मैं बस एक शब्दऑर डीफॉल्ट \ ListOrDefault \ संग्रहऑर डीफॉल्ट विकल्प नहीं ढूंढ पा रहा हूं।

क्या ऐसा कोई तरीका है? यदि नहीं, तो मैं यह कैसे करूँ:

  MyClass myObject = MyDictionary .SingleOrDefault (x = & gt; {यदि (x.Value! = Null) रिटर्न (x.Value.Id == sourceField SrcField.Id); और झूठी वापसी;})। कुंजी;  

अगर एक से अधिक मैच हैं? (मुझे एक निष्पादन मिल रहा है क्योंकि सिंगलऑर डीफॉल्ट केवल एकल परिणामों के लिए होता है (कल्पना कीजिए!)।


लगता है कि मुझे स्पष्ट होना चाहिए (हालांकि जहां जवाब दिखता है अच्छा)।

मेरे पास उपरोक्त बयान है मैंने अपना कार्यक्रम बदल दिया है ताकि यह हमेशा 1 पर वापस नहीं लौटाता (बहुत सारे मान हो सकते हैं जो एक कुंजी से मेल खाते हैं)। यह विफल हो जाता है इसलिए मैं वापस लौटने के लिए एक संग्रह (सिर्फ एक आइटम के बजाय) की तलाश कर रहा हूं।

आप IEnumerable & lt; T & gt; .FirstOrDefault (Func & lt; T, bool & gt; predicate) का उपयोग कर सकते हैं यदि आपका इरादा पहले की वस्तु से मेल खाता है

अन्यथा आप केवल IEnumerable & lt; T & gt; पर ध्यान केंद्रित कर रहे हैं। जहां (फ़नक & lt; T, bool & gt; predicate) linq एक्सटेंशन, जो सभी तत्वों को वापस करेगा जो कि विधेयक पारित हो । यदि किसी तत्व को वास्तविकता से मेल नहीं खाया जाता है, तो उस बिंदु पर एक खाली IEnumerable & lt; T & gt; वापस लौटाएगा, यदि आप वास्तव में शून्य की आवश्यकता चाहते हैं, तो आप बस देख सकते हैं कि इसमें कुछ भी है।

<पूर्व> var res = MyDictionary.Where (x = & gt; {if (x.Value! = Null) रिटर्न (x.Value.Id == sourceField.SRcField.Id); वापसी वापस;}); अगर (! Res.Any ()) res = null;

तब अगर आपको पूर्णतः इसे एक सूची के रूप में रखना है, तो आप बस कॉल कर सकते हैं

  res.ToList ();  

ध्यान दें कि यदि आप वास्तव में एक शब्दकोष में & quot; TKey, TValue & gt; , res में हेरफेर कर रहे हैं KeyValuePair & lt; TKey , टीवील्यू & gt; 's।


Comments

Popular posts from this blog

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

iphone - Smoothing a rounded stroke in Core Graphics -

Best practice for URL redirection in ASP.NET web application -