2009-11-19 12 views
9

से कोई डेटा वाले सभी कॉलम निकालें यदि किसी विशेष कॉलम के लिए सभी आइटम खाली हैं, तो मैं डेटा कॉलम से उस कॉलम को हटाना चाहता हूं। डेटाटेबल में सभी कॉलम पर इस ऑपरेशन को करने का सबसे शानदार तरीका क्या है?डेटाटेबल

उत्तर

32

आप Compute विधि, इस तरह उपयोग कर सकते हैं: वैकल्पिक रूप से

if (table.Compute("COUNT(ColumnName)", "ColumnName <> NULL") == 0) 
    table.Columns.Remove("ColumnName"); 

, आप LINQ का उपयोग कर सकते हैं:

if (table.AsEnumerable().All(dr => dr.IsNull("ColumnName"))) 
    table.Columns.Remove("ColumnName"); 

संपादित: पूरी तरह से सवाल का जवाब करने के लिए:

foreach(var column in table.Columns.Cast<DataColumn>().ToArray()) { 
    if (table.AsEnumerable().All(dr => dr.IsNull(column))) 
     table.Columns.Remove(column); 
} 

आपको ToArray पर कॉल करने की आवश्यकता है क्योंकि लूप संग्रह को संशोधित करेगा।

+0

अच्छा। सभी कॉलम नामों को जांचने के लिए कोड समायोजित करें और आपको हरा चेकमार्क मिल जाएगा। – Larsenal

+2

क्या मैं PlzSendTheCodes सुनता हूं? –

+0

शायद ;-)। मैंने वास्तव में इसे पहले ही लागू कर लिया है। बस इसे सही चिह्नित नहीं करना चाहते हैं क्योंकि यह प्रारंभिक प्रश्न का पूरी तरह उत्तर नहीं देता है। – Larsenal

0
Function RemoveEmptyColumns(Datatable As DataTable) As Boolean 
    Dim mynetable As DataTable = Datatable.Copy 
    Dim counter As Integer = mynetable.Rows.Count 
    Dim col As DataColumn 
    For Each col In mynetable.Columns 
     Dim dr() As DataRow = mynetable.Select(col.ColumnName + " is Null ") 
     If dr.Length = counter Then 
      Datatable.Columns.Remove(col.ColumnName) 
      Datatable.AcceptChanges() 
     End If 
    return true 
end function 
0
public static void RemoveNullColumnFromDataTable(DataTable dt) 
{ 
    for (int i = dt.Rows.Count - 1; i >= 0; i--) 
    { 
     if (dt.Rows[i][1] == DBNull.Value) 
      dt.Rows[i].Delete(); 
    } 
    dt.AcceptChanges(); 
} 
+0

निश्चित रूप से यह पूरी पंक्ति हटा देता है यदि उस पंक्ति में कॉलम 1 डीबीएनयूएलएल है। ओपी के बाद काफी कुछ नहीं था। – Steve

0
private static void RemoveUnusedColumnsAndRows(DataTable table) 
    {    
     for (int h = 0; h < table.Rows.Count; h++) 
     { 
      if (table.Rows[h].IsNull(0) == true) 
      { 
       table.Rows[h].Delete(); 
      } 
      enter code here 
     } 
     table.AcceptChanges(); 
     foreach (var column in table.Columns.Cast<DataColumn>().ToArray()) 
     { 
      if (table.AsEnumerable().All(dr => dr.IsNull(column))) 
       table.Columns.Remove(column); 
     } 
     table.AcceptChanges();   
    } 
1

आप उस तरह datatable.you उपयोग में सभी स्तंभ स्पष्ट।

डेटाटेबल। कॉलम। क्लीयर();