2012-12-06 18 views
25

मुझे आश्चर्य है कि समूह और टोलूकअप एक्सटेंशन विधि के बीच क्या अंतर है।लुकअप बनाम ग्रुपबी

public class Person 
{ 
    public uint Id { get; set; } 
    public string Name { get; set; } 
    public DateTime Birthday { get; set; } 
} 


List<Person> People { get; set; } 

अब मैं एक्सटेंशन तरीके से ऊपर का उपयोग कर सकते हैं::

var groupedPeople = People.GroupBy((x) => x.Id); 

var lookupPeople = People.ToLookup((x) => x.Id); 

उन बयानों के बीच क्या अंतर है

हमें इस तरह वस्तुओं की एक सूची करते हैं?

अग्रिम धन्यवाद।

मार्को बी

+0

"अंतर" परिभाषित करें ... एक अंतर "वापसी मूल्य" हो सकता है, दूसरा ठोस कार्यान्वयन ... विस्तृत !! –

+0

http://bytes.com/topic/c-sharp/answers/777912-linq-groupby-vs-tolookup –

+1

http://stackoverflow.com/questions/1337539/ilookuptkey-tval-vs-igroupingtkey-tval –

उत्तर

50

ToLookupतत्काल निष्पादन का उपयोग करता है, और एक ILookup जो आप कुंजी द्वारा समूहों को देखने के लिए अनुमति देता है देता है।

GroupBy का उपयोग करता निष्पादन स्थगित कर, और केवल आपके जिस क्रम में प्रत्येक समूह के पहले का सामना करना पड़ा था (ताकि पहले समूह उदाहरण के लिए, स्रोत डेटा के पहले तत्व शामिल होंगे) में समूहों देता है, होने का कोई विचार के साथ कुंजी द्वारा बाद में समूहों को देखने में सक्षम। प्रत्येक बार जब आप परिणामों पर पुन: प्रयास करते हैं, तो उसे फिर से समूह करना होगा।

असल में, जो आपको उपयोग करना चाहिए, इस पर निर्भर करता है कि आप परिणामों के साथ क्या करने जा रहे हैं। यदि आप बस एक बार फिर से एक बार फिर से चलने जा रहे हैं (उदाहरण के लिए आगे परिवर्तन के लिए), GroupBy आमतौर पर ठीक है। यदि आप उन्हें कई परिचालनों के संग्रह के रूप में रखना चाहते हैं, तो ToLookup की तत्काल प्रकृति उपयोगी है।

9
  1. ToLookup buffered है। समूह समूह को पुन: सक्रिय करता है।
  2. groupBy निष्पादित निष्पादन का उपयोग करता है जबकि ToLookup तत्काल उपयोग करता है।
संबंधित मुद्दे