【发布时间】:2013-06-20 19:58:01
【问题描述】:
我有以下(简单的)表:
表:MyDataTable
**Color**
Blue
null
Red
Yellow
null
null
Green
这个查询(例如):
query =
from user in MyDataTable.AsEnumerable()
where (user.Field<string>("Color") != null ? user.Field<string>("Color").Contains("") : false)
select user;
显示所有不为空的字段。
编辑:对不起,我的问题在标题中。我想进行查询以仅显示空字段。 如何? 问候!
【问题讨论】:
-
为什么需要编写查询来返回数据集中的所有内容?听起来你在浪费 CPU 周期什么都不做。
-
因为它是一个简单的查询,所以它是一个简单的示例。我的应用程序有一个更复杂的查询。我的应用程序仅显示(默认情况下)10 个项目。空字段在查询中生成异常,并且空字段不会显示在 DataGridView 中。
-
null 不会在查询中产生异常。当您尝试在 DataGridView 中显示它时,它可能会出现。在这种情况下,您需要
value ?? "null"之类的东西,它基本上说if (value == null) value = "null"您正在添加项目。关键是这里没有要写的查询,你只需调用AsEnumerable()或AsEnumerable().ToList()或.ToArray()来转换你的dt。 -
非常感谢您的帮助。此查询生成异常: where (user.Field
("Color").Contains("lu")) NullException -
是的,您收到 NullReferenceException 异常,因为您尝试在空值上调用
Contains。它与您的查询无关。该代码恰好在您的查询中,但不是特定于它,您不能在 C# 中的任何位置调用方法或访问 null 上的属性。在拨打电话之前添加支票。
标签: c# .net linq ienumerable dbnull