【问题标题】:How to solve IEnumerable<DataRow> Value cannot be null. Parameter name: value如何解决 IEnumerable<DataRow> 值不能为空。参数名称:值
【发布时间】:2016-01-28 08:18:48
【问题描述】:

你能解释一下参数值和来源有什么不同的错误吗? 我尝试在 DataTable 进行查询,因此需要转换为 IEnumerable。

IEnumerable<DataRow> tablecust = datasetcust.Tables[0].AsEnumerable();

然后查询

DataRow cust = tablecust
    .Where(x=> x.Field<string>("Name") == "Customer1" 
            && x.Field<string>("Address") == "Karet" )
    .FirstOrDefault();

我有错误:

Value cannot be null. Parameter name : value

谁能解释一下?

谢谢

【问题讨论】:

  • 你从哪里得到这个错误? dt.Tables[0].Rows.Count 返回什么? cust == null 返回什么?
  • 查询时。 .Where()
  • 我已经问了三个问题 ;)
  • 没有办法在x.Field 得到这个错误。 String 是一种引用类型,因此即使值是 null 或者它是 DbNull.Value ,它也可以工作。 Field 在这两种情况下都会返回 null。如果没有像 NameAddress 这样的列,你会得到一个不同的错误。所以我猜你没有显示相关代码。
  • 不,请发布完整堆栈跟踪(包括完整的错误消息、行号和调用堆栈)和更多代码,f.e.在以下几行中使用cust。也许看看你如何填充表格也很有帮助(例如从数据库中,然后显示查询)。

标签: c# linq datatable ienumerable


【解决方案1】:

这可能是因为任一列(名称或地址)的值都将为空,并且您必须在比较之前进行处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 2014-05-17
    相关资源
    最近更新 更多