c# - 如何检查 DataTable 上的 IS NULL?

标签 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");

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

最佳答案

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

关于c# - 如何检查 DataTable 上的 IS NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15523917/

相关文章:

c# - xmldoc.Childnodes.item() 问题

c# - C# .NET 中的 PLC 编程

c# - OData 集合参数绑定(bind)......它们真的有效吗?

c# - Ctrl+F5 在 VS 中的 ASP.NET 项目中如何工作?

c# - 如何使用 LINQ 选择内部 XML 节点的集合?

c# - LINQ 根据值类型从字典中进行子选择

c# - 使用 Where 子句将 csv 值读入字典

c# - 覆盖列表框c#.net中的itemsource属性

c# - System.OverflowException 在一个项目中——在另一个项目中工作

asp.net - 不知道如何在sql session 状态中存储 session id