linq,Ajax错误,其中查询返回null

时间:2013-02-05 01:58:34

标签: c# asp.net-mvc linq

我收到此错误,我正在尝试使用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.

2 个答案:

答案 0 :(得分:2)

基于代码&amp;提供的评论,ClassA.dateClassA.date.MonthClassA.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