如何在DataTable上检查IS NULL

本文关键字:检查 IS NULL DataTable | 更新日期: 2023-09-27 18:04:46

在我的情况下,我正在传递sql查询并在数据集中获取数据,但是当我试图获得ParentId列包含NULL的行时,会发生问题。这是一段代码。

   DataSet ds = GetDataSet("Select ProductId,ProductName,ParentId from ProductTable");
   //ds is not blank and it has 2 rows in which ParentId is NULL
   DataRow[] Rows = ds.Tables[0].Select("ParentId IS NULL");

但我仍然没有得到任何行。需要帮助。谢谢。

如何在DataTable上检查IS NULL

使用强类型DataRow扩展方法Field,该方法也支持可空类型:

IEnumerable<DataRow> rows = ds.Tables[0].AsEnumerable()
    .Where(r => !r.Field<int?>("ParentId").HasValue);

请注意,我已经使用Enumerable.Where,这是一个Linq扩展方法来过滤表。

如果你想要一个数组使用ToArray,如果你想要一个新的DataTable使用CopyToDataTable。如果您只是想枚举结果,请使用foreach

foreach(DataRow row in rows)
{
    // ...
}
var rowsWithoutParent = dt.AsEnumerable().Where(r => r["ParentId"] == null);
var rowsWithParent = dt.AsEnumerable().Where(r => r["ParentId"] != null);
var rows = ds.Tables[0].AsEnumerable()
    .Where(r => r.IsNull("ParentId"));

为我工作:

   DataTable newDt = dt.AsEnumerable().Where(r => r["column name"] == DBNull.Value).CopyToDataTable();

如果等于null是无效的,因为它返回DBNull

检查

ds.Tables.Count
然后

ds.Tables[0].Rows.Count

您可以这样访问条目:

 String value = ds.Tables[0].Rows[RowNum][ColNum].ToString();