【问题标题】:C# - Only set a the value of a variable if some other variable is not nullC# - 如果其他变量不为空,则仅设置变量的值
【发布时间】:2018-08-09 05:51:53
【问题描述】:

我正在从 DataTable 创建一个列表。数据表中的某些单元格值为空,因此在运行转换时出现错误。我尝试使用“三元条件运算符”来实现这一点,但这也需要一个“else”子句。如果单元格值为空,我想跳过为变量赋值。

【问题讨论】:

  • 如果你能分享一个minimal reproducible example,那就太棒了。
  • 您的整数(或您遇到问题的任何变量类型)是否可以为空?
  • 变量在大多数情况下必须声明为int? (问号允许空值)。在某些类为 null 的情况下,您必须执行以下操作: (myClass == null) ? "" : "你好 Wordl"
  • 我找到了解决该问题的方法。它不会跳过分配值,而是将 null 分配给字符串,将 0 分配给整数。 someVariable = (dr["someColumn"] != DBNull.Value) ? dr["someColumn"].ToString() : someVariable;

标签: c# linq datatable


【解决方案1】:

您可以遍历 DataTable 并在所有行中查找非空值。您需要检查 DBNull。

var dtRows = dt.AsEnumerable().Select(x => x.ItemArray).ToList();
var rowsWithoutNullValue = dtRows.Where(x => x.Any(y => y != null || y != DBNull.Value)).ToList();

【讨论】:

    【解决方案2】:

    如果“跳过分配值”是指您想完全放弃 nulls,那么只需运行

    .Where(x => x != null)
    

    首先,然后进行转换。

    【讨论】:

      猜你喜欢
      • 2019-08-27
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      • 2012-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多