数据表上的LINQ查找所有行都为空的位置

cod*_*biz 2 c# oledb excel

我有一个代码从excel电子表格读取数据,我已经走了这么远的SO一些答案

DataTable dt = ds.Tables[0];
dt = dt.AsEnumerable().Where((row, index) => index > 4).CopyToDataTable();
DataTable filteredRows = dt.Rows.Cast<DataRow>().Where(row => row.ItemArray.All(field => !(field is System.DBNull))).CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)

有这个

dt.Rows.Cast<DataRow>().Where(row => row.ItemArray.All(field => (field is System.DBNull)))
Run Code Online (Sandbox Code Playgroud)

返回所有空行.

我也尝试过Any,它没有提供所需的输出

上面的代码适用于所有字段都不为NULL的位置,即每列都有一个字段.这可以免除所有列丢失1列的行,但这不是我想要的.

我想免除所有列为空的行.

Ser*_*rvy 6

只需将NOT(!)移出一个级别即可.您希望"所有行为空"的项不为真,而不是"所有行都不为空"的项为真.

DataTable filteredRows = dt.Rows.Cast<DataRow>()
    .Where(row => !row.ItemArray.All(field => field is System.DBNull))
    .CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)