2009-11-19 17 views

Antwort

32

Sie können das Compute Methode, wie folgt aus:

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

Alternativ können Sie LINQ verwenden:

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

EDIT: vollständig die Frage zu beantworten:

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

Sie müssen ToArray aufrufen, da die Schleife die Sammlung ändern wird.

+0

Schön. Passen Sie den Code an, um alle Spaltennamen zu überprüfen, und Sie erhalten das grüne Häkchen. – Larsenal

+2

höre ich PlzSendTheCodes? –

+0

Vielleicht ;-). Ich habe es bereits selbst implementiert. Ich will es nur noch nicht richtig markieren, da es die erste Frage nicht vollständig beantwortet. – 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

Sicher löscht dies die gesamte Zeile, wenn Spalte 1 in dieser Zeile DBNULL ist. Nicht ganz, was das OP wollte. – 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

Sie klar alle Spalte in datatable.you wie die Verwendung.

datatable.Columns.Clear();

Verwandte Themen