从DataTable中删除没有数据的所有列

Lar*_*nal 12 c# datatable

如果特定列的所有项都为空,我想从DataTable中删除该列.在DataTable中的所有列上执行此操作的最优雅方法是什么?

SLa*_*aks 37

您可以使用此Compute方法,如下所示:

if (table.Compute("COUNT(ColumnName)", "ColumnName <> NULL") == 0)
    table.Columns.Remove("ColumnName");
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用LINQ:

if (table.AsEnumerable().All(dr => dr.IsNull("ColumnName")))
    table.Columns.Remove("ColumnName");
Run Code Online (Sandbox Code Playgroud)

编辑:完全回答这个问题:

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

您需要调用,ToArray因为循环将修改集合.

  • 我听到PlzSendTheCodes吗? (2认同)