我有一个代码从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列的行,但这不是我想要的.
我想免除所有列为空的行.
只需将NOT(!)移出一个级别即可.您希望"所有行为空"的项不为真,而不是"所有行都不为空"的项为真.
DataTable filteredRows = dt.Rows.Cast<DataRow>()
.Where(row => !row.ItemArray.All(field => field is System.DBNull))
.CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)