C # में DataTable से कॉलम निकालें


113

मेरे पास एक DataSet है जो मुझे एक DataTable मिलता है जिससे मैं एक फ़ंक्शन कॉल से वापस जा रहा हूं। इसमें 15-20 कॉलम होते हैं, हालाँकि मुझे केवल 10 कॉलम डेटा चाहिए।

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

मुझे एक निश्चित लंबाई डेटा फ़ाइल के मानों को लिखना होगा।


मेरे द्वारा प्राप्त डेटासेट पर मेरा कोई नियंत्रण नहीं है। केवल एक चीज मुझे पता है कि इसमें सब कुछ शामिल है।
ब्रायन जी

जवाबों:


302

बैंडविड्थ और मेमोरी को कम करने के लिए चुने गए कॉलम को सीमित करने के अलावा:

DataTable t;
t.Columns.Remove("columnName");
t.Columns.RemoveAt(columnIndex);

13
बस स्पष्ट करने के लिए: यह भी काम करता है जब DataTableपहले से ही मौजूदा पंक्तियाँ होती हैं, न केवल एक खाली पर DataTable
उवे कीम

23

अपने इच्छित सभी कॉलम हटाने के लिए, नीचे दिए गए कोड को काम करना चाहिए। यह सूचकांक 10 पर हटा देगा (याद रखें कि कॉलम 0 आधारित हैं), जब तक कि कॉलम की गिनती 10 या उससे कम न हो।

DataTable dt;
int desiredSize = 10;

while (dt.Columns.Count > desiredSize)
{
   dt.Columns.RemoveAt(desiredSize);
}

1
सिर्फ मेरा 2 सी, मुझे यह समाधान पसंद नहीं है, कॉलम इंडेक्स के साथ काम करने से दुःस्वप्न का रखरखाव होता है ..
रॉबर्टो

1
प्रश्न में निम्नलिखित कथन शामिल हैं: ".. कॉलम परिभाषित किया गया है जो मुझे चाहिए .." तो इसका मतलब है कि आवश्यक कॉलम भी क्रमिक रूप से आवश्यक नहीं हैं, इसलिए कोई यह नहीं कह सकता है कि "मुझे पहले 10 कॉलम की आवश्यकता है"। इस तरह के समाधान में कॉलम नामों की एक सरणी होनी चाहिए जो वह चाहता है, फिर हम सभी अन्य नामों के इस "परिभाषित" सेट में नहीं पड़ने वाले को समाप्त कर सकते हैं। इसे लागू करने के विभिन्न तरीके; सरल फोरच लूप से क्वेरी या लिनक में IN का उपयोग कर।
रॉबर्टो

3

प्रश्न को पहले से ही उत्तर के रूप में चिह्नित किया गया है, लेकिन मुझे लगता है कि प्रश्न में कहा गया है कि व्यक्ति एक से कई कॉलम हटाना चाहता है DataTable

तो उसके लिए, यहाँ मैंने वही किया है, जब मैं उसी समस्या को लेकर आया था।

string[] ColumnsToBeDeleted = { "col1", "col2", "col3", "col4" };

foreach (string ColName in ColumnsToBeDeleted)
{
    if (dt.Columns.Contains(ColName))
        dt.Columns.Remove(ColName);
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.