5

次の部分ビュー コード スニペットを検討してください。

List<sellingPrice> Prices = ViewBag.Prices;
foreach (var mgmp in mg.messageGroup.messageGroupMessagePLUs)
{
    if (Prices.Any(x => x.pluId == mgmp.messagePLU.plu.pluId))
    {
        //do stuff
    }
}

データベース内の特定の製品については、行

if (Prices.Any(x => x.pluId == mgmp.messagePLU.plu.pluId))

System.NullReferenceException をスローします。コードを調べると、mgmpオブジェクトであり、Prices に要素が含まれていることがわかります。ただし、x の値は null です。現在、「x」を返すように要求するのではなく、テストを満たす「x」が存在するかどうかを単にテストしているという印象を受けています。

とてもイライラする問題です。誰かが本当に明白な解決策を指摘できることを願っています。

4

3 に答える 3

7

試す:

Prices.Any(x => x!=null && x.pluId == mgmp.messagePLU.plu.pluId)

たとえば、.messagePLUがnullになる可能性がある場合は、他のnullチェックを実行する必要がある場合があります

于 2013-01-16T15:17:01.310 に答える
2

これが発生する最も可能性の高い理由は、内の1つ以上のアイテムがであるためViewBag.Pricesですnull。値がないはずであると仮定して、そもそも価格にsが含まれている理由を確認xします。nullnullnull

于 2013-01-16T15:18:13.140 に答える
0

推論してくれてありがとう。List が null の場合でも list.Any() any をチェックする拡張機能。

    /// <summary>
    /// Determines whether the collection is null or contains no elements.
    /// </summary>
    /// <typeparam name="T">The IEnumerable type.</typeparam>
    /// <param name="enumerable">The enumerable, which may be null or empty.</param>
    /// <returns>
    ///     <c>true</c> if the IEnumerable is null or empty; otherwise, <c>false</c>.
    /// </returns>
    public static bool IsNullOrEmpty<T>(this ICollection<T> enumerable)
    {
        return enumerable != null && enumerable.Count > 0;
    }
于 2015-09-30T03:56:42.890 に答える