我收到这个错误,我正在尝试使用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.
基于代码&提供的注释,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;
}
当没有结果时,对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