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

时间:2018-03-06 12:29:45

标签: c# asp.net .net linq datatable

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

例如:

我的数据表有两列

 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();

有谁能建议我如何实现这一目标?

3 个答案:

答案 0 :(得分:1)

根据您提到的要求,您需要使用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()))

现在只返回每列都有值的行。

答案 1 :(得分:1)

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

WebElement element = driver.findElement(locator)
actions.moveToElement(element).click().perform();

答案 2 :(得分:0)

试试这个:

for (int i = dt.Rows.Count - 1; i >= 0; i--)
    {
    if (dt.Rows[i]["Column2"].ToString() == "")
        {
            dt.Rows[i].Delete();
            dt.AcceptChanges();
        }
    }