【问题标题】:Show all null fields in a IEnumerable query在 IEnumerable 查询中显示所有空字段
【发布时间】: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


【解决方案1】:

删除where 子句:

var query = from user in MyDataTable.AsEnumerable()
            select user;

或者简单地说:

var query = MyDataTable.AsEnumerable();

【讨论】:

  • 就此而言,也请删除 from 和 select 子句。 MyDataTable.AsEnumerable() 就是你所需要的。
  • 非常感谢您的帮助。是的,这段代码显示了所有字段,但我不能只显示空字段。
【解决方案2】:

我想进行查询以显示所有字段(包括空字段)。

要显示所有内容,直接使用表格即可:

query = MyDataTable.AsEnumerable();

请注意,您可以使用String.IsNullOrEmpty 来简化现有查询:

query =
   from user in MyDataTable.AsEnumerable()
   where !string.IsNullOrEmpty(user.Field<string>("Color"))
   select user;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多