-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参照のプロパティにアクセスしようとしています。これを行う前に、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 に答える