-2

我收到此错误,我正在尝试使用 linq 搜索列表。

当我找到结果时它工作正常..但是当我没有结果时我得到这个错误,这对我来说没有意义。

任何人都可以为我指出如何调试此错误的正确方向?

Microsoft JScript 运行时错误:Sys.ArgumentException:无法反序列化。数据不对应于有效的 JSON。参数名称:数据

示例代码:

IEnumerable<ClassA> listClassA = bar.ToList(); // at this point list contains values.

decimal b = listClassA.FirstOrDefault(a => a.date.Month == 9).number; // at this point if there are no results it crashes and i get the error.
4

2 回答 2

2

根据提供的代码和注释,ClassA.date, ClassA.date.Month,或ClassA.number进行一些解析并获得“好的”答案,您必须发布这些属性的代码。

有一个很小的机会,一个错字data而不是date导致异常,但真的很难说。

对于它的价值(因为这不是您提供的错误的原因),您必须检查 null。

decimal b = listClassA.FirstOrDefault(a => a.date.Month == 9).number;

... 应该:

decimal b;
var septemberData = listClassA.FirstOrDefault(a => a.date.Month == 9);

if (septemberData != null)
{
    b = septemberData.number;
}
于 2013-02-05T02:26:43.143 回答
1

当没有结果时,大概您的调用FirstOrDefault()将返回 null。但是您随后尝试访问number此空引用的属性。在执行此操作之前,您应该检查 null:

var firstItem = listClassA.FirstOrDefault(a => a.date.Month == 9);
decimal b = (firstItem != null ? firstItem.number : -1); // or pick some other sensible default value
于 2013-02-05T02:31:52.220 回答