LINQ on Datatable查找所有行都是空的
我有一个从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();
有这个
dt.Rows.Cast<DataRow>().Where(row => row.ItemArray.All(field => (field is System.DBNull)))
返回空的所有行。
我也尝试过Any
,它没有给出所需的输出
上面的代码适用于所有字段不为NULL的情况,即每列都有一个字段。 这免除了所有有1列丢失的行,但这不是我想要的。
我想豁免所有列都为空的所有行。
只要将NOT( !
)移出一个等级。 您希望“所有行都为空”的项目不是“真”,而不是“所有行都不为空”。
DataTable filteredRows = dt.Rows.Cast<DataRow>() .Where(row => !row.ItemArray.All(field => field is System.DBNull)) .CopyToDataTable();
你有没有尝试过滤任何领域,而不是所有?
DataTable filteredRows = dt.Rows.Cast<DataRow>().Where(row => row.ItemArray.Any(field => !(field is System.DBNull))).CopyToDataTable();