2011-01-28 18 views
6

मेरे पास एक डेटाटेबल उपलब्ध है जिसमें हजारों पंक्तियां हैं। एम्पिड नामक एक कॉलम है जिसमें कुछ पंक्तियों के लिए '0' है। मैं उन्हें अपने वर्तमान डेटाटेबल से हटाना चाहता हूं और एक नया सही डेटाटेबल बनाना चाहता हूं। मैं इसे पंक्ति से पंक्ति में नहीं जा सकता क्योंकि इसमें बड़ी मात्रा में डेटा है। मुझे इस समस्या को दूर करने के लिए एक सुझाव दें।बड़ी डेटा तालिका से पंक्तियों को फिर से चलाने के बिना कैसे निकालें?

उत्तर

7

सबसे अच्छा तरीका है स्रोत पर यह फिल्टर करने के लिए (यदि संभव हो) होगा - इसलिए यदि आप यह एक डाटाबेस से बना रहे हैं, शुरू होने वाली है, जहां

का उपयोग कर अपने एसक्यूएल क्वेरी अपने आप में सब 0 मान को बाहर। नेट 2.0, एमएस ने काफी हद तक डेटाटेबल पर फ़िल्टरिंग तर्क बढ़ाया। इसलिए यदि आपने डेटाव्यू (अपने डेटाटेबल के शीर्ष पर) का उपयोग किया और वहां पर जहां क्लॉज जोड़ा और इस क्षेत्र पर कुछ प्रकार के रनटाइम इंडेक्स जोड़े, तो यह आपको सभी रिकॉर्ड्स

+0

अद्यतन किया, मैं डेटाव्यू के विचार देने के आपके उत्तर की सराहना करता हूं। धन्यवाद। मैं कोशिश करूँगा और आप पर वापस आऊंगा। – NayeemKhan

1

आप DataTable.Select("EmpID <> 0") का उपयोग कर सकते हैं। यह DataRows की एक सरणी वापस कर देगा जो आप आवश्यकतानुसार अपना नया डेटाटेबल बना सकते हैं।

1

क्या पहले EmpID = 0 के साथ पंक्तियों का चयन करना संभव नहीं है और फिर इन पर फिर से शुरू हो सकता है?

 DataTable newTable = new DataTable(); 
     foreach (DataRow dr in oldTable.Select("EmpID = '0'")) { 
      newTable.Rows.Add(dr); 
      oldTable.Rows.Remove(dr); 
     } 
+0

मुझे याद आया कि आप भी पंक्तियों को एक नई तालिका में ले जाना चाहते थे, जवाब – Ozzy

0

पर कोशिश किए बिना वांछित परिणाम देगा

डेटारो [] temp = तालिका। चयन करें ("EmpID = '0'");

foreach(DataRow dr in temp) 
    { 
    table.Rows.Remove(dr); 
    } 

table.acceptchanges();

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