tags:

views:

173

answers:

1

If all the items for a particular column are empty, I want to remove that column from the DataTable. What's the most elegant way to do this operation on all columns in the DataTable?

+5  A: 

You can use the Compute method, like this:

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

Alternatively, you can use LINQ:

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


EDIT: To completely answer the question:

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

You need to call ToArray because the loop will modify the collection.

SLaks
Nice. Adjust code to check all the column names and you get the green checkmark.
Larsenal
Do i hear PlzSendTheCodes?
Henk Holterman
Maybe ;-). I've actually implemented it myself already. Just don't want to mark it correct yet since it doesn't completely answer the initial question.
Larsenal