如果任何列值为空,则删除数据表行c#

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果任何列值为空,则删除数据表行c#相关的知识,希望对你有一定的参考价值。

我需要从数据表中删除行,即使数据表中的任何列都有空值。

例如 :

我的数据表有两列

 Value     Input
  Dep     Phase 1
  Sec     
  Div     Phase 2

结果

 Value     Input
  Dep     Phase 1
  Div     Phase 2

我想删除第二行,因为输入列有空值。我坚持使用下面的代码。

dtTable = dtTable.Rows.Cast<DataRow>()
          .Where(row => !row.ItemArray.All(field => field is DBNull || string.IsNullOrWhiteSpace(field as string))).
          .CopyToDataTable();

任何人都可以建议我如何实现这一目标?

答案

根据您提到的要求,您需要使用Any,它将检查如果至少列具有null值或空字符串,它将过滤掉该行。所以,喜欢:

row => !row.ItemArray.Any(field => field is DBNull || 
                                string.IsNullOrWhiteSpace(field as string))

编辑:

如果你的所有列都是string类型,那么上面的代码可以正常工作,否则你需要通过调用ToString()将它明确地转换为字符串:

row => !row.ItemArray.Any(field => field is DBNull || 
                                string.IsNullOrWhiteSpace(field.ToString()))

现在,这将仅返回每列具有值的行。

另一答案

如果可以使用for循环。我们可以检查每行和每列的空值

    for (int i = dt.Rows.Count - 1; i >= 0; i--)
    {

      if (dt.Rows[i]["col1"] == DBNull.Value || dt.Rows[i]["col2"] == DBNull.Value)
      {
           dt.Rows[i].Delete();
      }
    }

以上是关于如果任何列值为空,则删除数据表行c#的主要内容,如果未能解决你的问题,请参考以下文章

如果字段值为空,则显示破折号

如果列值在一定范围内彼此接近,则删除 pandas 行

Google Apps脚本:表格形式数据处理,如果某些单元格为空,则删除行,同时维护某些列

如果上一列值不为空,则更新表中的下一列

Webi - 当另一列值为空时隐藏中断中的列

excel 怎样筛选出 有一个值为空的行