2009-05-22 15 views
19

मुझे एक अन्य प्रोग्रामर के साथ बहस हो रही है जिसके साथ मैं काम करता हूं।डेटाटेबल्स बनाम आईनेमेरेबल <T>

एक डेटाबेस वापसी प्रकार के लिए, वहाँ कोई महत्वपूर्ण स्मृति के उपयोग या प्रदर्शन मतभेद, या अन्य विपक्ष जो किसी डेटासेट और DataTables और पक्ष प्रकार जो IEnumerable<T> लागू ... या ठीक इसके विपरीत

मैं का उपयोग कर से बचने करना चाहिए रहे हैं IEnumerable<T> (List<T>, T[] etc) को लागू करने वाले लौटने वाले प्रकारों को प्राथमिकता दें क्योंकि यह अधिक हल्के वजन वाले हैं, गुणों तक पहुंचने पर ऑब्जेक्ट पर दृढ़ता से टाइप किए गए हैं, अंतर्निहित प्रकार आदि के बारे में समृद्ध जानकारी की अनुमति देते हैं। हालांकि डेटा रीडर का मैन्युअल रूप से उपयोग करते समय उन्हें स्थापित करने में अधिक समय लगता है।

क्या इन दिनों डेटाटेबल्स का उपयोग करने का एकमात्र कारण सिर्फ आलसी है?

+0

मंच/भाषा? मुझे लगता है कि डेटाटेबल एक मंच-विशिष्ट संरचना है; लेकिन इसे स्पष्ट करने से – Javier

+0

का उत्तर देना आसान हो जाता है, निश्चित रूप से प्लेटफ़ॉर्म .Net Framework (C# या vb) 2.0+ – CRice

+0

मुझे नहीं लगता कि मैंने 200 9 से डेटाटेबल का उपयोग किया है, वे – CRice

उत्तर

18

डेटाटेबल निश्चित रूप से स्मृति आवश्यकताओं में, और प्रोसेसर समय में उन्हें बनाने/उन्हें भरने में सूचीबद्ध हैं।
डेटा रीडर का उपयोग करने से डेटारिएडर का उपयोग करना काफी तेज है (हालांकि अधिक वर्बोज़) (मुझे लगता है कि आप उन्हें भरने के लिए डेटा एडाप्टर का उपयोग कर रहे हैं)।

कहा ... जब तक यह कुछ जगह है जहाँ यह वास्तव में मामलों, तो आप शायद ठीक किसी भी तरह से कर रहे हैं में है, और दोनों तरीकों काफी तेजी से हो जाएगा, तो बस जो कुछ भी प्रत्येक मामले में और अधिक आरामदायक है के साथ जाने के । (कभी-कभी आप उन्हें छोटे कोड से भरना चाहते हैं, कभी-कभी आप उन्हें छोटे कोड के साथ पढ़ना चाहते हैं)

जब मैं ग्रिड व्यू पर बाध्यकारी हूं, या जब मुझे एक से अधिक परिणाम की आवश्यकता होती है तो मैं केवल डेटाटेबल्स का उपयोग करता हूं एक ही समय में सक्रिय।

6

डेटाटेबल्स का उपयोग करने से सीधे अंतर्निहित डेटा स्रोत और इसे कैसे रखा जाता है, इसका मतलब है। यह एक रखरखाव बिंदु दृष्टिकोण से अच्छा नहीं है। यदि आपकी सभी दृश्य जरूरतों को कुछ वस्तुओं की एक सूची है, तो आपको यह सब देना चाहिए।

9

सिस्टम का उपयोग करने का एक अन्य लाभ। चयन कक्षाएं यह है कि आपको बेहतर सॉर्टिंग और खोज विकल्प मिलते हैं। मुझे डेटाटेबल प्रकार या खोजों को बदलने के किसी भी उचित तरीके से नहीं पता; संग्रह कक्षाओं के साथ आप बस अपनी कक्षा को IComparable या IEquatable लागू करते हैं और आप पूरी तरह से अनुकूलित कर सकते हैं कैसे List.Sort और List.Contains काम करता है।

सूचियों के साथ आपको डीबीएनयूएल के बारे में चिंता करने की ज़रूरत नहीं है, जिसने मुझे एक से अधिक अवसरों पर फिसल दिया है क्योंकि मुझे शून्य की उम्मीद थी और डीबीएनयूएल मिला।

+3

सॉर्टिंग और खोज के लिए डेटाव्यू का उपयोग करें। –

8

मुझे IEnumerable<T> के साथ तथ्य भी पसंद है कि आप विधियों और गुणों के साथ संग्रह के अंतर्निहित प्रकार को बढ़ा सकते हैं जो कार्यान्वयन को और अधिक सुरुचिपूर्ण बनाता है, और कोड अधिक रखरखाव करता है। उदाहरण के लिए पूर्णनाम संपत्ति। यदि आप अपने नियंत्रण से बाहर हैं तो आप कक्षा में विस्तार विधियां भी जोड़ सकते हैं।

public class SomeUser 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string FullName { get { return String.Format("{0} {1}", FirstName, LastName); } } 
} 
0

मैं एसक्यूएल के माध्यम से बड़ी तालिकाओं के साथ मिल गया है, डेटा तालिका IEnumerable का बहुत तेजी से बजाय था। मैंने एक HTML पृष्ठ में 25 कॉलम के साथ 26k पंक्तियों वाली एक तालिका डाली। 3 सेकंड में डेटाटेबल, आईनेमेरेबल ने 9 सेकंड लिया। मैं डेटाटेबल वोट देता हूं। प्रकार को छोड़कर सभी कोडवाड समान।

संबंधित मुद्दे