如何在DataTable上检查IS NULL?

时间:2013-03-20 12:44:58

标签: c# asp.net linq datatable

在我的情况下,我传递一个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");

但我仍然没有得到任何行。 需要帮忙。感谢名单。

6 个答案:

答案 0 :(得分:12)

使用强类型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)
{
    // ...
}

答案 1 :(得分:3)

var rowsWithoutParent = dt.AsEnumerable().Where(r => r["ParentId"] == null);

var rowsWithParent = dt.AsEnumerable().Where(r => r["ParentId"] != null);

答案 2 :(得分:2)

var rows = ds.Tables[0].AsEnumerable()
    .Where(r => r.IsNull("ParentId"));

答案 3 :(得分:0)

检查

ds.Tables.Count

然后

ds.Tables[0].Rows.Count

答案 4 :(得分:0)

您可以访问以下项目:

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

答案 5 :(得分:0)

为我工作:

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

如果等于null不起作用,因为返回DBNull