मुझे ILookup<TKey, TVal>
और IGrouping<TKey, TVal>
के बीच अंतर को व्यक्त करने में परेशानी हो रही है, और अगर मैं इसे सही ढंग से समझता हूं तो उत्सुक हूं। LINQ ने IGrouping
आइटमों के अनुक्रमों का उत्पादन करके इस मुद्दे को संकलित किया जबकि मुझे ToLookup
विस्तार विधि भी प्रदान की। तो ऐसा लगा कि वे वही थे जब तक कि मैं अधिक बारीकी से नहीं देखा।ILookup <TKey, TVal> बनाम IGrouping <TKey, TVal>
var q1 =
from n in N
group n by n.MyKey into g
select g;
// q1 is IEnumerable<IGrouping<TKey, TVal>>
कौन सा के बराबर है:
var q2 = N.GroupBy(n => n.MyKey, n => n);
// q2 is IEnumerable<IGrouping<TKey, TVal>>
कौन सा की तरह एक बहुत लग रहा है:
var q3 = N.ToLookup(n => n.MyKey, n => n);
// q3 is ILookup<TKey, TVal>
हूँ मैं निम्नलिखित उपमा में सही हूँ?
- एक
IGrouping<TKey, TVal>
एक समूह (यानी एक बंद अनुक्रम),KeyValuePair<TKey, TVal>
के अनुरूप जहां मूल्य वास्तव में तत्वों (बजाय एक एकल तत्व से) का एक अनुक्रम - एक
IEnumerable<IGrouping<TKey, TVal>>
उन लोगों में से एक दृश्य है (जैसा होता है क्या आप जब एकIDictionary<TKey, TVal>
- से अधिक पुनरावृत्ति प्राप्त करने के लिए एक
ILookup<TKey, TVal>
अधिक एकIDictionary<TKey, TVal>
जहां मूल्य वास्तव में तत्वों
उत्तर के लिए धन्यवाद। मैं पहले पुश/पुल के मामले में लिंक की सोच में नहीं आया हूं। जब मैं Google पर गया तो मैं आपके ब्लॉग में से एक आया, इसलिए मैं इसे देख लूंगा। इसके बारे में सोचने के लिए एक दिलचस्प तरीका लगता है। – mckamey
मुझे अभी भी लगता है कि ये मतभेद 2 अलग-अलग इंटरफेस को उचित नहीं ठहराते हैं। मुझे लगता है कि लाइब्रेरी डिजाइनर को सिर्फ एक इंटरफ़ेस के लिए निर्णय लेना चाहिए था।हो सकता है कि यहां सिर्फ एक व्यक्तिगत स्वाद है जो कुछ स्पष्ट नहीं है। – rudimenter
क्या यह मुझे है या ग्रुपबी बनाम ग्रुपजॉइन के साथ कुछ भ्रम है? वे केवल _conceptually_ संबंधित हैं। शायद यह जवाब में सिर्फ एक टाइपो है। – sehe