LINQ To मंदार और ToLookup में क्या अंतर है


जवाबों:


176

एक शब्दकोश एक 1: 1 मानचित्र है (प्रत्येक कुंजी को एक एकल मान पर मैप किया जाता है), और एक शब्दकोश तथ्य के बाद उत्परिवर्तनीय (संपादन योग्य) है।

लुकअप एक 1: कई मैप (बहु-मानचित्र; प्रत्येक कुंजी को IEnumerable<>उस कुंजी के साथ मानों में मैप किया जाता है), और ILookup<,>इंटरफ़ेस पर कोई म्यूट नहीं है।

एक साइड नोट के रूप में, आप एक कुंजी पर एक लुकअप (इंडेक्सर के माध्यम से) को क्वेरी कर सकते हैं जो मौजूद नहीं है, और आपको एक खाली अनुक्रम मिलेगा। शब्दकोश के साथ भी ऐसा ही करें और आपको एक अपवाद मिलेगा।

तो: कितने रिकॉर्ड प्रत्येक कुंजी साझा करते हैं?

यह देखने का एक अति सरलीकृत तरीका है कि एक एक के Lookup<TKey,TValue>लिए लगभग तुलनीय हैDictionary<TKey,IEnumerable<TValue>>


5
कुछ हद तक एक ग्रुपबी के समान?
कार्लो वी। डांगो

7
क्या लुकअप का व्यवहार मानक अनुबंध के एक महत्वपूर्ण प्रमुख भाग के लिए एक खाली अनुक्रम लौट रहा है ILookup<,>या एक फेंकने के लिए एक कार्यान्वयन नि: शुल्क है KeyNotFoundExceptionRx में कार्यान्वयन एक फेंकता है KeyNotFoundException
लुकाज़ोएड

मामले में यह किसी की मदद करता है: Dictionary<TKey, IEnumerable<TValue>>सूचियों के शब्दकोश के रूप में वर्णित किया जा सकता है। तो ToLookup()यह कहने जैसा है: मुझे सूचियों का एक शब्दकोश दें। किसी कारणवश सुनने में यह वर्णन आया कि इस तरह से मुझे सीधे अपने सिर में पहुँचाने में मदद मिली।
नैट कुक

-4

टॉडबर्न <TKey, TValue> है जबकि ToLookup <TKey, T1, T2, T3, ...> IGrouping के समान है, लेकिन गणना स्मृति में रहती है।


3
यह निश्चित नहीं है कि आप किसके साथ समझाने की कोशिश कर रहे हैं T1, T2, T3, ...; ToLookup और ToDictionary (तरीकों खुद को) बहुत ज्यादा एक ही एपीआई है
मार्क Gravell
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.