我收到此错误,我正在尝试使用linq搜索列表。
当我找到结果它工作正常..但是当我没有结果时我得到这个错误,这对我没有意义。
任何人都可以指出我如何调试此错误的正确方向?
Microsoft JScript运行时错误:Sys.ArgumentException:无法反序列化。数据与有效的JSON不对应。 参数名称:data
示例代码:
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.
答案 0 :(得分:2)
基于代码&amp;提供的评论,ClassA.date
,ClassA.date.Month
或ClassA.number
进行一些解析并获得“好”答案,您必须发布这些属性的代码。
有一点点机会,data
而不是date
的拼写错误导致异常,但这真的很难说。
对于它的价值(因为这不是你提供的错误的原因),你必须检查是否为空。
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;
}
答案 1 :(得分:1)
如果没有结果,可能您对FirstOrDefault()
的调用将返回null。但是,您正在尝试访问此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